1.数学运算符
+ - * / % 等
2.赋值运算符
3.逻辑运算符(bool)
&& ——逻辑与 ||——逻辑或 !取反;
1.数学运算符
+ - * / % 等
2.赋值运算符
3.逻辑运算符(bool)
&& ——逻辑与 ||——逻辑或 !取反;
1.声明变量
在脚本中声明一个变量,并公开且初始化处理;
比如public int a = 10;
保存,点击脚本附加的游戏物体,在Inspector面板中的Script组件一栏,会多一个元素,a 并显示10,后面在脚本中更改a的参数,但在外面inspector中没有改变。保持第一次初始化的值;
如果第一次a没有赋值,那么在inspector面板中默认是0的值。
在第二次修改a的值,在inspector中不会更改,当脚本中的a的值与inspector中的值不同时,在
void start(){
print(a); //
}
运行游戏,发现在console的日志输出中显示的值与inspector中a的值是一样的,所以在后续中要更改a的值,可以不在脚本中更改。在脚本中更改没有什么效果,可以直接在inspector张进行更改。
Private int a =10;
Private 是私有的,能在inspector面板中显示,也不能在其中修改;
2.什么时候使用private ,什么时候使用Public;
如果你想通过inspector面板方便的修改参数的值的时候,可以设定为public,
你可以在别的地方去引用这个变量时设置为public;
public GameObject Object;//Game Object类型可以直接赋值一个游戏物体过来,比如摄像机、灯光、网格等;
通过拖拽赋值缺点:可能出现数据丢失,比如低版本在高版本中打开,拖拽赋值的数据可能会发生丢失现象,要重新拖拽赋值。
3.定义变量时,没有定义public和private,默认为private;
4.字段名不能跟关键字相同;
关键字:int float class,与程序语法相关的;
1.脚本的结构
在脚本的开头,是命名空间,Using 后面的文字内容是白色,如果命名空间没有使用(意思是没有使用里里面的方法)那么后面的文字呈现为灰色;
下面的MonoBehiviour类,就是UnityEngine中的类;
不同的命名空间有不同的类,要使用某个命名空间的类,那么就要使用某个命名空间;
创建的脚本,定义的类要和文件名保持一致性
2.声明一个类
定义一个命名空间,在命名空间中定义一个类,
namespece MyGame{
class gameDate{
}
}
要引用这个类,就必须使用这个命名空间;
1.创建脚本的几种方式
在project中的空白处,或者某个文件夹下右击可以创建脚本;
可以点击Hierarchy中的某个物体,在Inspector面板下,点击AddComponent,创建一个脚本。
2.附加脚本
第一种:将创建的脚本拖到Hierarchy面板下游戏物体身上。
第二种:点击游戏物体,将脚本拖入游戏物体的Inspector面板的AddCompoent下面;
第三种:可以在游戏物体的Inspector面板中的AddComponent下添加脚本名称的脚本;
第四种:可以点击游戏物体,在window下点击添加脚本;
1.在类中建立方法
public void Move(){
print(name +"移动");//在此print这个函数没有办法调用,在个方法是在MonoBehivious类中声明的,只能在这个类或继承它的子类中被调用;
Debug.Log(name+"移动");//这个类是系统内置的类,可以调用;
public void Attack(){
Debug。Log(“正在攻击”);
}
void Start() {
enemy1.Move(); //注意类在前面一章节已经声明和初始化;可以直接调用,程序在前一章节;
enemy2.Move();
}
要调用类中的方法,那么方法必须是public类型,不然调用不了,
脚本中的Start方法好像没有调用,而是直接使用,我觉的这其实是一种掉用的形式,只是它加以修饰了,它是unity调用的;
Enemy enemy1=null //声明类 null 是指这个类不从在,只有一个名字;
print(ememy);
enemy1.name; //如果要访问enemy1里面的成员,发现报错why,
Enemy enemy1 =new Enemy();
enemy1.name;//这样还不能访问,要在Enemy的类中,将字段公开,才能访问,
public:
int hp ;
string name; //公开即可;
print(enemy1.name); //
输出的是Null;当字符串name没有赋值是,系统默认值是Null;
print(enemy1.hp);//输出的是0;
2.可以修改类变量的参数,并赋值
enemy1.name="wd";
print (enemy1.name);//输出的是wd;
1.unity中创建一个脚本命名为player,编辑打开;
public class Player:MonoBehaviour{
class 类,创建一个新的脚本,就是创建一个类,创建一个命名为player的类,这个类是继承MonoBehaviour;
2.在脚本中建立其他的类
class Enemy{
包含字段和方法:
string name ;
int hp; //这就是字段相当于成员变量; 自己声明的
} 类不一定要继承
3.类的使用
可以声明变量
void Start(){
int hp 100; //内置的变量
Enemy enemy1;
Enemy enemy1 =new Enemy();
}
1.实现两个整型的相加
void Add(int a,int b){
int res = a + b;
}
Add(10,19); //调用这个函数可以完成函数的相加,但是不会出现结果,在定义的函数中,是定义一个变量来存储结果,所以在调用中会有返回值。在方法内部定义的变量是没办法在外面调用的,那怎么获得res的结果呢,使用返回值;
int Add (int a,int b){
int res=a+b;
return res;
}
int res = Add(10,15);
方法名不能重复,但是上面的变量名重复了,为什么可以,原因是变量、方法名不能在同一个方法函数中被重复,但上面的两个变量名在不同的方法函数中,所以可以重复;
2.如果有返回值,只能有一个返回值,一个方法最多只能有一个返回值,定义的方法前的类型,必须和返回值的类型一致。
string Add (int a,int b);{
int res = a+ b;
return res;
}
这样会出现报错;
1.方法参数
创造敌人,但敌人的其他属性相同,但参数不同。
void CreateEnemy(Vector3 Pos);
调用:CreateEnemy(New Vector3(1,1,1);
1.枚举类型
敌人——魔法师 ,战士 、巫师、坦克、射手等
int roleType =0 //0代表什么、1代表什么等;
enum RoleType{
Mag,
Soldier,
Wizard
}
这时定义好的一个类型, RoleType rt =RoleType.Mag
rt=RoleType.Soldier; 等等
1.重载解决方案
在新建脚本后,修改了脚本的命名后,点击打开,会弹出一个窗口,有几个选项,第一个是重新加载,第二个是重载解决方案,第三和第四个都是忽略;一般选择重载解决方案,并修改类名;
2.method 方法
返回值 方法名(参数)
{方法体}
void 返回值为空;让我想起了ue4中函数蓝图节点,这些蓝图节点中有些是有返回值的有些没有,比如SetActorLocation,没有返回值,但Spawn ActorlofClass是有返回值的。
1.声明一个空数组
int[] hps={};
2.数组类的元素的值可以更改
hps[1]=10;
3.int [] hap =new int [10]; new 构造,10长度
print(hps[0]; 注意数组可以不初始化,即可赋值处理,但变量不能;
4.int [ ] hps=null; print(hps);输出的是Null
int [ ] hps1 ={ } ; 输出的是[int 32]
5. int [ ] hps = new[4 ] {2,3,2,3}
1.声明一个数组
数组声明格式:类型 [ ] 数组名={数组值}
int[ ]hps = { 100,50,30,43};数组长度为5
数组索引:从零开始;
访问数组元素:int[2];
1.if语句
if() 达到条件执行if里面的程序
{}
else ()条件为false执行else里面的程序
{}
1.两个数相除,int res= a/b
print("res");
输出的结果是小数部分将会被舍去;
float res4 =3+3.4;不会报错
int res4 =3+3.4; 会报错
多个数据类型一起运算,返回的结果的数据类型是数据类型大的;
2.求余
3.+ 可以链接两个字符串;
1.bool类型
2字符类型和字符串类型
char c =‘c’;
string name ="绝地求生";
1.声明整型变量
long mp =1000 ;声明完后,会在mp下面有一条波浪线,表明,这个变量从未被使用过;
2.整型
整形的类型有八种,每一种类型都有一定范围的存取空间。
3.浮点型float
float hp =3.4;会报错,因为每一个值都有一个类型,比如100,默认为整型,小数有两种类型,float类型和double类型,输入3.4,默认类型为float,要解决报错,输入时float hp =3.4f,加一个f,是说明,3.4为float类型;
1.变量声明方法
第一种:声明变量直接初始化——int a = 100;
第二种:不直接声明——int a
a=100;
注意:变量声明是指给一个这样类型的变量,这个变量并没有实力化,它依然是一个抽象的概念,比如声明一个int a , 在这里只是给出一个整形变量的空间,这个空间叫a,空间并不是具体存在的。没有初始化变量,不能使用,系统会出现报错;
1.变量:用来存取数据;
注释一段代码有一个快捷键:先Ctrl+K 后 Ctrl+C,两个两在一起按(选择或多行)。
2.变量不能以数字开头。
1.日志输出打开
在window里面,有一个Console(控制台),点击打开;
2.输出方式
print输出(只能在组建中输出),可以输出各种类型数据;
print这种方式的输出,只能在MonoBehaviour里面使用,意思时只有建立的脚本类继承了MonoBeHaviour,才能够使用。
DeBug.Log("2121")输出方式。可以在任意类类型的方法当中都可使用。
DeBug.LogError("2121");
Debug.LogWarning("2121").输出方式,与前面的不同之处在于标识的不同。
3.在日志输出中,右上角有3中标识,显示正常,警告和错误三种信息,旁边的数值代表信息条数。