• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >游戏开发 > Unity 3D C#脚本基础

Unity 3D C#脚本基础

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2022-04-30

匿名通过本文主要向大家介绍了等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
Unity 5.x 支持两种脚本语言:C# 和 JavaScript。在 Unity 3D 内编程,首选 C# 来编写脚本。

C# 是微软公司开发的一种面向对象编程语言。由于有强大的 .NET 类库支持,以及由此衍生出的很多跨平台语言。C# 逐渐成为 Unity 3D 开发者推崇的程序语言。

变量

1) 变量定义

任何一个脚本中都缺不了变量,C# 脚本也不例外。

变量主要用于存储数据,在 Unity 3D 的脚本中,每个变量必须拥有唯一的名称,脚本在识读变量时采用的是字符串匹配方式,所以对变量名称大小写敏感。

一旦 Unity 3D 脚本挂到某个 Unity 3D 对象上,在 Unity 3D 的属性面板中就会显示出该脚本中的各个公共变量。开发人员也可以在属性面板中对公共变量的值进行设置,设置后的值将会影响脚本的运行,相当于在脚本中对该变量进行了赋值。

在 Unity 3D 中,定义 C# 变量的格式如下:

数据类型 变量名称

例如,下面定义了一个整型变量 age:
int age;

2) 变量赋值

可以通过对变量赋值来对其初始化,赋值时使用赋值运算符“=”。

赋值的格式有两种,一种是
int age;age=5;
另一种是以字面形式初始化,形式如下:
int age=5;

3) 变量的数据类型

变量有 6 种数据类型。

整数类型

整数类型的变量取整数数值。C# 将整数分为 8 种类型,如下表所示。使用时,根据数值的可能大小,选择范围最小的类型,一般常用的类型为 short、int 和 long 3 种。例如:
byte classSize=23;ushort student=2344;
类型说 明取值范围
sbyte有符号 8 位整数-128 ?127
byte无符号 8 位整数0 ?255
short有符号 16 位整数-32768?32767
ushort无符号 16 位整数0?65535
int有符号 32 位整数-2147489648?2147483647
uint无符号 32 位整数0?42994967295
long有符号 64 位整数-263 ?263
ulong无符号 64 位整数0 ?264
 

浮点类型

浮点类型变量主要用于处理含有小数的数值数据。根据小数位数不同,C# 提供了单精度浮点类型 float 和双精度浮点类型 double,例如:
float angles=36.5f;double rate=0.253D;
C# 的浮点类型如下表所示。

类型说 明取值范围
float32位单精度浮点类型-2128?2128
double64位单精度浮点类型一21024 ?21024
 

布尔类型

布尔(bool)类型表示真或假,布尔类型变量的值只能是 true 或 false,不能将其他的值赋给布尔类型。例如:
bool b=true;
在定义全局变量时,若没有特殊要求,不用对整数类型、浮点类型和布尔类型的变量进行初始化,整数类型和浮点类型的变量默认初始化为 0,布尔类型的变量默认初始化为 false。

字符类型

为保存单个字符,C# 支持字符(char)类型,字符类型的字面量是用单引号括起来的。一些特殊字符要用反斜线“\”后跟一个字符表示,称为转义字符,如下表所示。

Char x="X"

转义字符含义转义字符含义
\'单引号\f换页
\"双引号\n换行
\\反斜线\r回车
\0空\t水平制表符
\a报警\v垂直制表符
\b退格  

引用类型

引用类型是构建 C# 应用程序的主要数据类型,C# 的所有引用类型均派生自 System.Object。

引用类型可以派生出新的类型,也可以包含空(null)值。引用类型变量的赋值只复制对象的引用,而不复制对象本身。

枚举类型

枚举类型为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。

编写日期相关的应用程序时,经常需要使用年、月、日、星期等数据。可以将这些数据组织成多个不同名称的枚举类型。

使用枚举类型可以增强程序的可读性,在 C# 中使用关键字 enum 类声明枚举类型的变量,格式如下:
enum枚举名称{ 常量1=值1;常量2=值2;?常量n=值n}

变量的声明

声明变量就是指定变量的名称和类型,未经声明的变量不能在程序中使用。

在 C# 中,声明一个变量由一个类型和跟在后面的一个或多个变量名组成,多个变量之间用逗号分开,声明变量以分号结束。例如:
int age=30;float rate=20f;string name="Tom";
在 C# 的变量声明之前还可以添加访问修饰符:
  • private(默认修饰符),只能在本类中访问。
  • protected,只能在类或派生类中访问。
  • internal,只能在本项目中访问。
如果想让脚本中定义的变量在 Unity 3D 中的 Inspector 面板上显示,必须用 public 修饰。

在声明变量时,要注意变量名的命名规则:
  • 变量名必须以字母开头;
  • 变量名只能由字母、数字和下画线组成,而不能包含空格、标点符号、运算符等其他符号;
  • 变量名不能与 C# 中的关键字名称相同;
  • 变量名不能与 C# 中的库函数名称相同。

表达式和运算符

1) 表达式

表达式是由运算符和操作数组成的。

运算符设置对操作数进行什么样的运算,例如,加、减、乘、除都是运算符。

操作数是计算机指令的组成部分,它指出了指令执行的操作所需要的数据来源。

操作数包括文本、常量、变量和表达式等。例如:
int i=256;i=256/2+125;int j=2;j=j*j-2;

2) 运算符

运算符用于执行表达式运算,会针对一个以上操作数进行运算。例如 2+3,操作数是 2 和 3,而运算符是“+”。

运算符的种类很多,包括算术运算符、简单赋值运算符、关系运算符、位逻辑运算符、位移运算符以及特殊算术运算符等,与 JavaScript 类似,在此不再赘述。

语句

C# 的常用语句有顺序执行语句、选择分支语句和循环语句 3 种。

1) 顺序执行语句

当表达式中有多个运算符时,需要考虑运算符的执行顺序,也就是运算符的优先级。

例如,要对一本书的信息进行记录,书名为《程序设计语言》,价格为 36.5 元,书的编号为 243434。在代码中定义 3 个变量 bookName、Price、bookID 分别用来保存书名、价格以及编号,并分别对这3个变量进行赋值和输出,代码如下:
class Program{    static void Main(string[]args){        string bookName="程序设计语言";        Console.WriteLine("书名"+bookName);        float Price=36.5f;        Console.WriteLine("价格"+Price);        string bookID="243434";        Console.WriteLine("编号"+bookID);    }}
在该实例中,首先定义变量,为其赋值,然后输出变量的值,程序是自上而下地一行一行顺序执行。

2) 选择分支语句

在日常生活中,并非所有的事情都能按部就班地进行,程序也一样。为了实现一定的目标,经常需要改变程序语句执行的顺序。

在程序中,有时需要在满足某种条件时再执行某一语句。为了达到目标而进行选择的语句就是选择分支语句。

if语句

一个 if 语句后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。C# 中 if…else 语句的语法如下:

if(布尔表达式){
    如果布尔表达式为真执行的语句
}else{
    如果布尔表达式为假执行的语句
}

如果布尔表达式为 true,则执行 if 块内的代码;如果布尔表达式为 false,则执行 else 块内的代码。

一个 if 语句后可跟一个可选的 else if…else 语句,这种形式可用于测试多种条件。C# 中 if…else if…else 语句的语法如下:

if(布尔表达式1)
{当布尔表达式1为真时执行的语句}
else if(布尔表达式2)
{当布尔表达式2为真时执行的语句}
else if(布尔表达式3)
{当布尔表达式3为真时执行的语句}
else
{当上面的条件都不为真时执行的语句}

switch语句

当程序做条件判断时,可以用 if…else 语句,但是当条件很多时,如果还用 if…else 语句是很麻烦的。为了解决这个问题,C# 设置了分支语句 switch。其语法格式如下:

switch(值)
{
case值1:语句1;
break;
case值2:语句2;
break;
····
case值n:语句n;
break;
}

当 switch 后面的值取某一值时,就执行相应 case 后面的语句。例如,当值是值 1 时,执行语句 1;当值是值 2 时,执行语句 2……当值是 n 时,执行语句 n。

3) 循环语句

do…while 循环

do…while 循环是在循环的尾部检查条件。do…while 循环与 while 循环类似,但是 do…while 循环至少会确保一次循环。

C# 中的 do…while 循环语法如下:

do{
语句
}while(条件);

注意,条件表达式出现在循环的尾部,所以循环中的语句会在条件被测试之前至少执行一次。如果条件为真,控制流会转回上面的 do,重新执行循环中的语句。这个过程会不断重复,直到给定条件变为假为止。

while循环

在 C# 中 while 循环是常用的一种循环语句,while 循环的特点是直到条件为假时才跳出循环。C# 中的 while 循环的语法如下:

while(条件)
{语句}

在这里,语句可以是一个语句,也可以是几个语句组成的代码块。条件可以是任意的表达式,当为任意非零值时都为真。当条件为真时执行循环;当条件为假时,程序流将继续执行紧接着循环的下一条语句。

while 循环的关键点是循环可能一次都不会执行。当条件测试的结果为假时,会跳过循环主体,直接执行 while 循环的下一条语句。

for 循环

for 循环适合指定循环次数的应用,在使用时,需初始化一个作为计数器的变量值。例如:
for(int i=1;i<=10;i++){    Console.WriteLine("{0}, i");}
上面的 for 语句声明了计数器变量后,使用分号分开,接着给出条件判断的表达式 i2=10,再使用分号分开,最后给出对计算器变量的操作 i++。如果把 i++ 放在循环体内也是可以的。

函数

在 Unity 3D 中,C# 脚本需要预先载入类库,代码示例如下:
using UnityEngine;using System.Collections;public class NewBehaviourScript:MonoBehaviour{}
其中,NewBehaviourScript 是脚本的名称,它必须和脚本文件的名称一致(如果不同,脚本无法在物体上被执行)。

所有游戏执行语句都包含在这个继承自 MonoBehaviour 类的自创脚本中。

Unity 3D脚本中的常用函数如下:

1) Update()

正常更新,创建 JavaScript 脚本时默认添加这个方法,每一帧都会由系统调用一次该方法。

2) LateUpdate()

推迟更新,此方法在 Update() 方法执行完后调用,每一帧都调用一次。

3) FixedUpdate()

置于这个函数中的代码每隔一定时间执行一次。

4) Awake()

脚本唤醒,用于脚本的初始化,在脚本生命周期中执行一次。

5) Start()

在 Update() 之前、Awake() 之后执行。Start() 函数和 Awake() 函数的不同点在于 Start() 函数仅在脚本启用时执行。

6) OnDestroy()

当前脚本销毁时调用。

7) OnGUI()

绘制游戏界面的函数,因为每一帧要执行多次,所以一些时间相关的函数要尽量避免直接在该函数内部使用。

8) OnCollisionEnter()

当一个游戏对象与另外的游戏对象碰撞时执行这个函数。

9) OnMouseDown()

当鼠标在一个载有 GUI 元素(GUI Element)或碰撞器(Collider)的游戏对象上按下时执行该函数。

10) OnMouseOver()

当鼠标在一个载有 GUI 元素或碰撞器的游戏对象上经过时执行该函数。

11) OnMouseEnter()

鼠标进入物体范围时执行该函数。和 OnMouseOver() 不同,OnMouseEnter() 函数只执行一次。

12) OnMouseExit()

鼠标离开物体范围时执行该函数。

13) OnMouseUp()

当鼠标释放时执行该函数。

14) OnMouseDrag()

按住鼠标拖动对象时执行该函数。
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

相关文章

  • 2017-06-05 8个块的圆形转盘,传入的角度如果是负数如何计算对应的块是哪个?
  • 2017-06-05 游戏编程中数据相关类如何设计?
  • 2017-06-05 初学者求助xcode写的项目移植到vs2015的问题
  • 2017-06-05 请教一个关于集换式卡牌的设计思路
  • 2017-06-05 初学unity,关于解决有向匀速运动的问题
  • 2022-04-30Unity 3D Canvas画布
  • 2017-06-05 2D游戏里的地图物件是用数组存放好还是对象好?例如下面
  • 2022-04-30Unity 3D物理管理器(Physics Manager)
  • 2017-06-05 LOL客户端开发技术有哪些啊?不知道有哪位大神比较了解
  • 2017-06-05 Lua中加载csb文件后,slider怎么改变声音?

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Unity 3D Event System事件系统
    • 想学手机游戏和电脑游戏编程(主要电脑游戏)如何入门
    • SQL2008R2每新建一个查询窗口都会弹出个“连接到数据库引擎”的窗口!
    • unity脚本不挂载怎么调用
    • cocos2d-x代码在xcode7上运行报错,错误原因?
    • Java用Cocos写游戏的程序,靠谱吗?写游戏用什么语言比较敏接??
    • 求大神看看这个怎么解决
    • 在it行业里,程序员做哪方面开发收入最高?
    • 【Unity3D技术文档翻译】第1.2篇 为打包 AssetBundles 准备资产
    • 原创cocos2d-x横版手游《打小三》源码下载!

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有