Unity 3D JavaScript 脚本基础||Unity 3D C# 脚本基础

news2024/11/16 14:23:56

变量

  1. 数值变量。

 
  1. var a=1000;
  2. var b=3.1415926;

  1. 字符串变量。

是由单引号或双引号括起来的 Unicode 字符序列。

  1. 布尔值。

只有 true 和 false 。用来描述某个事物为真或为假。

  1. 数组

是数据的集合,数组中的每一个元素都有自己独有的下标,下标从0开始计数。

表达式和运算符

表达式是关键字、变量、常量和运算符的组合,可以用于执行运算、处理字符或测试数据。

运算符:

  • 算数运算符(二元运算符)指的是数学中最基本的加减乘除等运算。
算数运算符描述示例
+两变量相加a + b
-两变量相减a - b
*两变量相乘a * b
/两变量相除a / b
%求余数a % b
++变量递增a++
--变量递减a--

  • 相等运算符用于比较两个值。以返回布尔值作为比较结果(可归为关系运算符)。
相等运算符描述示例
==判断两变量是否相等a == b
===判断两变量是否完全相等a === b
!==判断两变量是否不相等a !== b
!===判断两变量是否完全不相等a !=== b

  • 关系运算符用于判断两个值之间的关系,以返回布尔值作为判断结果。
关系运算符描述示例
<小于a < b
<=小于或等于a <= b
>大于a > b
>=大于或等于a >= b

  • 赋值运算符用于将=右边的值赋给左边的变量,该值为任意类型的值。

 
  1. var a = 1;
  2. var b = a;
  3. var c = abc;

注:

b = a = 1,而不是字母a。

  • 逻辑运算符用于针对布尔值的操作。
逻辑运算符描述
&&并(与)
||
!

  • 其他运算符。

除以上常见运算符外,还有:

  • 按位运算符。

  • 条件运算符。

  • typeof 运算符。

  • new 运算运算符。

  • delete 运算符。

等等。

语句

JavaScript 提供了完整的基础编程语句,如下:

  1. var 语句。

 
  1. var 变量名 = 值

  1. 函数定义语句 。

 
  1. function 函数名(参数){
  2. 执行语句
  3. }

  1. 条件和分支语句。

  • 条件语句 if...else 完成程序流程快中的分支功能:如果其中的条件成立,则执行if后子语句;如果条件不成立,则执行else后子语句。

 
  1. if(条件){
  2. 子语句1
  3. } else{
  4. 子语句2
  5. }

  • 分支语句 switch可以根据一个变量的不同取值采取不同的处理方法。

如果表达式中取的值与分支语句中的任何一条子语句都不匹配,将执行 default(默认语句)中的语句。

 
  1. switch(expression){
  2. case label1:子语句1
  3. case label2:子语句2
  4. ...
  5. default:子语句n
  6. }

  1. 注释语句:///*....*/用于做注释,便于阅读代码,理解代码。

 
  1. //这是单行注释
  2. /*
  3. 这可以是多行注释
  4. 这可以是多行注释
  5. 这可以是多行注释
  6. */

  1. 循环语句:forfor...inwhile

  • for语句中只要条件成立,循环体语句就会循环执行。

 
  1. for(条件){
  2. 子语句
  3. }

注:

若条件一直成立,将进入死循环,要避免这种情况出现。

  • while语句所控制的循环不断的判断条件,如果条件始终成立,则一直循环直到条件不再成立。

 
  1. while(条件){
  2. 子语句
  3. }

  • for...in语句用于将一个对象的属性不断赋值给变量,直到将该对象的属性都枚举完。

 
  1. for (variablename in object){
  2. statement
  3. }

注:

  • break 语句用于结束循环,并执行循环体的下一条语句。

  • continue 语句用与结束本次循环,并马上开始下一次循环。

函数

函数(function)是一个可执行的程序段。函数被定义后,可以多次被程序调用。

函数是命名的程序段,这个程序段可以被当作一个整体引用和执行。使用函数时要注意以下几点:

  • 函数由关键字 function 定义(也可由 Function 构造函数构造)。

  • 使用 function 关键字定义的函数在一个作用域内是可以在任意处调用的。

  • 函数名是调用函数时引用的名称,它是大小写敏感的,调用函数时要注意这一点。

  • return 语句用于返回表达式的值

 Unity 3D C# 脚本基础

变量

  1. 变量定义。

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

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

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

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

 
  1. 数据类型 变量名称​​​​​​​
  2. int age;

  1. 变量赋值。

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

赋值的格式有两种,一种是

 
  1. int age;
  2. age=5;

另一种是以字面形式初始化,形式如下:

 
  1. int age=5;

  1. 变量的数据类型。

变量有 6 种数据类型。

  • 整数类型

整数类型的变量取整数数值。C# 将整数分为 8 种类型,如下表所示。使用时,根据数值的可能大小,选择范围最小的类型,一般常用的类型为 short、int 和 long 3 种。例如:

 
  1. byte classSize=23;
  2. 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 位整数-2⁶³ 〜2⁶³
ulong无符号 64 位整数0 〜2⁶⁴

  • 浮点类型

浮点类型变量主要用于处理含有小数的数值数据。根据小数位数不同,C# 提供了单精度浮点类型 float 和双精度浮点类型 double,例如:

 
  1. float angles=36.5f;
  2. double rate=0.253D;

C# 的浮点类型如下表所示。

选项描述取值范围
float32位单精度浮点类型-2¹²⁸〜2¹²⁸
double64位单精度浮点类型-2¹⁰²⁴〜2¹⁰²⁴

  • 布尔类型

布尔(bool)类型表示真或假,布尔类型变量的值只能是 true 或 false,不能将其他的值赋给布尔类型。例如:

 
  1. bool b=true;

在定义全局变量时,若没有特殊要求,不用对整数类型、浮点类型和布尔类型的变量进行初始化,整数类型和浮点类型的变量默认初始化为 0,布尔类型的变量默认初始化为 false

  • 字符类型

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

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

  • 引用类型

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

引用类型可以派生出新的类型,也可以包含空(null)值。引用类型变量的赋值只复制对象的引用,而不复制对象本身。 枚举类型 枚举类型为定义一组可以赋给变量的命名整数常量提供了一种有效的方法。

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

使用枚举类型可以增强程序的可读性,在 C# 中使用关键字 enum 类声明枚举类型的变量,格式如下:

 
  1. enum枚举名称
  2. {
  3. 常量1=值1;
  4. 常量2=值2;
  5. ...
  6. 常量n=值n
  7. }

变量的声明

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

在 C# 中,声明一个变量由一个类型和跟在后面的一个或多个变量名组成,多个变量之间用逗号分开,声明变量以分号结束。例如:

 
  1. int age=30;
  2. float rate=20f;
  3. string name="Tom";

在 C# 的变量声明之前还可以添加访问修饰符:

  • private(默认修饰符),只能在本类中访问。

  • protected,只能在类或派生类中访问。

  • internal,只能在本项目中访问。

如果想让脚本中定义的变量在 Unity 3D 中的 Inspector 面板上显示,必须用 public 修饰。

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

表达式和运算符

  1. 表达式。

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

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

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

操作数包括文本、常量、变量和表达式等。例如:

 
  1. int i=256;
  2. i=256/2+125;
  3. int j=2;
  4. j=j*j-2;

  1. 运算符。

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

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

语句

  1. 顺序执行语句。

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

例如,要对一本书的信息进行记录,书名为《程序设计语言》,价格为 36.5 元,书的编号为 243434。在代码中定义 3 个变量 bookNamePricebookID 分别用来保存书名、价格以及编号,并分别对这3个变量进行赋值和输出,代码如下:

 
  1. class Program
  2. {
  3. static void Main(string[]args){
  4. string bookName="程序设计语言";
  5. Console.WriteLine("书名"+bookName);
  6. float Price=36.5f;
  7. Console.WriteLine("价格"+Price);
  8. string bookID="243434";
  9. Console.WriteLine("编号"+bookID);
  10. }
  11. }

在该实例中,首先定义变量,为其赋值,然后输出变量的值,程序是自上而下地一行一行顺序执行。

  1. 选择分支语句。

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

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

  • if语句。

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

 
  1. if(布尔表达式){
  2. 如果布尔表达式为真执行的语句
  3. }else{
  4. 如果布尔表达式为假执行的语句
  5. }

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

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

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

  • switch语句。

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

 
  1. switch(值)
  2. {
  3. case值1:语句1;
  4. break;
  5. case值2:语句2;
  6. break;
  7. ····
  8. case值n:语句n;
  9. break;
  10. }

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

  1. 循环语句。

  • do…while 循环。

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

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

 
  1. do{
  2. 语句
  3. }while(条件);

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

  • while 循环。

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

 
  1. while(条件)
  2. {语句}

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

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

  • for 循环。

for 循环适合指定循环次数的应用,在使用时,需初始化一个作为计数器的变量值。例如:

 
  1. for(int i=1;i<=10;i++){
  2. Console.WriteLine("{0}, i");
  3. }

上面的 for 语句声明了计数器变量后,使用分号分开,接着给出条件判断的表达式 i2=10,再使用分号分开,最后给出对计算器变量的操作 i++。如果把 i++ 放在循环体内也是可以的。

函数

在 Unity 3D 中,C# 脚本需要预先载入类库,代码示例如下:

 
  1. using UnityEngine;
  2. using System.Collections;
  3. public class NewBehaviourScript:MonoBehaviour{
  4. }

其中,NewBehaviourScript 是脚本的名称,它必须和脚本文件的名称一致(如果不同,脚本无法在物体上被执行)。

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

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

  1. Update()

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

  1. LateUpdate()

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

  1. FixedUpdate()

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

  1. Awake()

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

  1. Start()

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

  1. OnDestroy()

当前脚本销毁时调用。

  1. OnGUI()

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

  1. OnCollisionEnter()

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

  1. OnMouseDown()

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

  1. OnMouseOver()

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

  1. OnMouseEnter()

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

  1. OnMouseExit()

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

  1. OnMouseUp()

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

  1. OnMouseDrag()

按住鼠标拖动对象时执行该函数。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/136761.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《收获,不止Oracle》读书笔记之第三章逻辑体系世界

1.数据库有序的逻辑体系 2.逻辑体系从老余养殖细细说起 推出的逻辑结构是&#xff1a;表空间&#xff08;tablespace&#xff09;、段&#xff08;segment&#xff09;、区&#xff08;extent&#xff09;、块&#xff08;block&#xff09;。Oracle server正是有条理地通过表空…

基础数学(七)——线性方程组的数值解法

文章目录考试要求基础知识一般求解思路消元法高斯消元法小主元导致的计算失误高斯列主元素消去法&#xff08;期末考试要求之一&#xff09;高斯消元法例题&#xff08;期末必考&#xff09;高斯消元法的优缺点减少fill-in现象&#xff08;了解&#xff09;矩阵分解Doolittle分…

【ROS】——常用命令(五)

文章目录前言1. rosnode1.1 rosnode list 列出活动节点1.2 rosnode ping 测试到节点的连接状态1.3 rosnode info 打印节点信息1.4 rosnode machine 列出指定设备上节点1.5 rosnode kill 杀死某个节点1.6 rosnode cleanup 清除不可连接的节点2. rostopic2.1 rostopic list(-v)2.…

【学习】深度强化学习

李宏毅深度学习一、深度强化学习Deep Reinforcement Learning (RL)什么是RL&#xff1f;&#xff08;三步骤&#xff09;计算loss计算A版本0版本1版本2版本32、梯度方法收集训练数据:探索3、actor criticMCTD版本3.5一、深度强化学习Deep Reinforcement Learning (RL) 什么是R…

【回答问题】ChatGPT上线了!给我推荐20个比较流行的图像语义分割模型

给我推荐20个比较流行的图像语义分割模型 在这里列出20个比较流行的图像语义分割模型&#xff1a;U-Net Mask R-CNN Fully Convolutional Network (FCN) SegNet DeepLab v3 PSPNet ENet ICNet RefineNet DenseASPP DenseNet LinkNet FPN BiSeNet ENAS Deeplab v3 GCN CRF-RNN …

Linux环境变量

文章目录什么是环境变量&#xff1f;什么是本地变量&#xff1f;如何获取环境变量&#xff1f;在shell中在程序中如何添加/删除环境变量&&本地变量&#xff1f;在shell中在程序中为什么环境变量能够被子进程继承&#xff1f;什么是环境变量&#xff1f; 环境变量是进程…

Vue初识系列【1】

文章目录一 前端体系1.1 前端三要素1.2 JavaScript 框架1.3 JavaScript 构建工具1.4 前端所需后端技术1.5 UI框架二 前后端分离史2.1 后端为主的 MVC 时代&#xff08;web1.0&#xff09;2.2 基于 AJAX 带来的 SPA 时代(web2.0)2.3 前端为主的 MV* 时代2.4 NodeJS 带来的全栈时…

OBS 进阶 音频面板优化

因为,面板高度就那么大,如果声音源很多的话,就有点乱。 优化目的:静音的,自动放在底部,这样,音频面板上面的都是没有静音的,也是我们最关注的部分。 目录 一、音频面板优化 1、不想要音频面板的title,将其去掉

【LeetCode每日一题】【2023/1/3】2042. 检查句子中的数字是否递增

文章目录2042. 检查句子中的数字是否递增方法1&#xff1a;直接遍历写法2&#xff1a;按本题特有条件方法2&#xff1a;栈方法3&#xff1a;std::stringstream写法22042. 检查句子中的数字是否递增 LeetCode: 2042. 检查句子中的数字是否递增 简单\color{#00AF9B}{简单}简单 句…

202301-第一周资讯

大家好&#xff0c;欢迎来到本周资讯&#xff0c;在过去的一周内呢&#xff0c;我们在示例DEMO、文档、教学视频上都有了较多的产出并且帮助大家解决了不少问题&#xff0c;赶紧看看上周成果吧&#xff01; 目录 DEMO 动态TopN报表 导出图文报告的脚本示例 Superpage pc端…

【FPGA】基本实验步骤演示 | Verilog编码 | 运行合成 | 设备/引脚分配 | 综合/实施 | 设备配置

写在前面&#xff1a;本章的目的是让你理解与门、或门和非门的行为&#xff0c;并使用 Verilog 语言实现多输入与门、或门和非门。在生成输入信号之后&#xff0c;你需要通过模拟来验证这些门的操作&#xff0c;并使用 FPGA 来验证 Verilog 实现的电路的行为。 0x00 引入&#…

Vue+Echarts监控大屏实例十六:Echarts对接天地图插件开发

一、实例概述 本实例实现echarts使用天地图组件的开发,通过修改echarts中百度地图及高德地图插件实现echarts中使用天地图的使用。本实例实现对于监控界面的相关开发资料,提供实例源码、开发过程视频及实现过程。   1. Echarts参考文档: echarts   2. 高德地图插件:ech…

P1455 搭配购买

题目描述 明天就是母亲节了&#xff0c;电脑组的小朋友们在忙碌的课业之余挖空心思想着该送什么礼物来表达自己的心意呢&#xff1f;听说在某个网站上有卖云朵的&#xff0c;小朋友们决定一同前往去看看这种神奇的商品&#xff0c;这个店里有 nn 朵云&#xff0c;云朵已经被老板…

非Web服务弱口令检查工具下载与使用

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是非Web服务弱口令检查工具下载与使用。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 再次强调&#xff1…

操作系统的运行机制和体系结构

文章目录&#x1f380;前言&#xff1a;本篇博客知识总览&#x1f3c5;运行机制&#x1f387;两种指令&#x1f387;两种状态&#x1f387;两种程序&#x1f3c5;操作系统的内核&#x1f387;内核概念&#xff1a;&#x1f3c5;操作系统的体系结构&#x1f3af;最常考点&#x…

DevOps - Jenkins可视化流水线(后端部分)

目录 &#x1f9e1;创建DevOps工程 &#x1f9e1;拉取代码 &#x1f9e1;项目编译 &#x1f9e1;构建镜像 &#x1f9e1;推送镜像 &#x1f9e1;部署到Dev环境 &#x1f9e1;邮件功能 &#x1f9e1;激活微服务 &#x1f49f;这里是CS大白话专场&#xff0c;让枯燥的学习…

zookeeper下载安装

1、环境准备 ZooKeeper服务器是用Java创建的&#xff0c;它运行在JVM之上。需要安装JDK 7或更高版本。 2、上传 将下载的ZooKeeper放到/opt/ZooKeeper目录下 #上传zookeeper altp put f:/setup/apache-zookeeper-3.5.6-bin.tar.gz #打开 opt目录 cd /opt #创建zooKeeper目录…

电子招标采购系统源码之什么是电子招投标系统?

随着互联网时代的到来&#xff0c;各行业都受到不同的影响&#xff0c;其中招投标行业也不例外。为了顺应互联网潮流的发展&#xff0c;电子招投标逐渐取代传统的纸质的招投标方式&#xff0c;给招标方、投标方、招标代理等各方也带来了前所未有的机遇与挑战。那么什么是电子招…

日志采集 - Filebeat

Filebeat 是什么&#xff1f; Filebeat是本地文件的日志数据采集器&#xff0c;可监控日志目录或特定日志文件&#xff08;tail file&#xff09;&#xff0c;并将它们转发给Elasticsearch或Logstatsh进行索引、kafka等。 是使用 Golang 实现的轻量型日志采集器&#xff0c;也…

Spring Boot配置MinIO(实现文件上传、读取、下载、删除)

一、 MinIO MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口&#xff0c;非常适合于存储大容量非结构化的数据&#xff0c;例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等&#xff0c;而一个对象文件可以是任意大小&#x…