for 循环语句
循环执行一段代码
for (int i= 0; i<=10; i++; );
{
print ("创建一个人")
}
for 循环语句
循环执行一段代码
for (int i= 0; i<=10; i++; );
{
print ("创建一个人")
}
int[] pg={1,2,3,4,5};
pg[3] = 60;修改数组的值
print(pg[3])=60;
数组声明第二种方式
int [] hp = new int[20];
数组长度为20
访问后输出的值是默认值
null 空值
数组:类型【】 数组名 = {数组值}
int 【】ps = {1 , 2 ,3 ,5 , 8} 数组长度为5
print(ps[1]);
输出结果为2
最大索引长度为5-1=4
索引从0开始
通过索引来访问数据
数组名【索引】
if语句:if(逻辑表达式:必须返回一个true或者false)如果是true的话执行大括号里面的代码,false的话不会执行。
else语句:如果不满足if语句就执行
int gta = 666;
if(gat<123);
{
print("显示死亡画面")
}
else
{
print("显示行动画面")
}
比较运算符
操作数1 运算符 操作数2
int hp = 100;
bool qwe = hp>0;
print(qwe);
结果输出 true
操作数1大于操作数2输出true
小于的话false
等于也是false
int hp = 100;
hp = hp + 20 可以等于 hp += 20;
hp = hp - 20 可以等于 hp -= 20;
自增运算符 ++ --
hp++ = hp + 1;
hp-- = hp - 1;
算数运算符
+ 加
- 减
* 乘
/ 除
% 求余
int a=9; int b=3.1;
int ok =a/b;
print (ok);
//整数相除,小数会被舍去
float ok1 =1+1.9 //多个数据类型运算,返回的结果类型是数据类型大的
string gtr1 = "my name is";
string gtr2 = "huo che wang"
nissangtr = gtr1+gtr2;
print (nissangtr);
bool(布尔类型) 他的取值范围只有true或false
bool isDie = false 未死亡
'C'=字符
"asdfgsd"=字符串
不同类型存储单位不一样
常量无法变化
变量可以变化
声明变量时要考虑使用过程中变化范围 然后选择合适的整数去存储这个变量 不同变量类型所占内存的大小不一样
float hp2= 3.4 // double
float hp2= 3.4f //float
int up; 声明变量
hp=100;赋值
注释快捷键 Ctrl+k Ctrl+c
int hp =100;声明变量
int 数据类型 hp 变量名 100 值
变量用来存储数据
变量名必须以字母或下划线开头
赋值:右边的值给左边变量
Debug.Log 输出
Debug.LogWarning 输出警告
Debug.LogError 错误输出
// 注释
/* */ 多行注释
1.禁用组件
刚体组件没办法禁用,因为刚体组件身上没有勾;
可以禁用碰撞器组件;
BoxCollider collider = GetComponent<BoxCollider>();
collider.enabled = false; //禁用了组件;
组件被禁用后,组件中的方法依然可以被调用,
比如把前面说所的脚本player给禁用了。
先禁用player脚本,在调用里面的方法Start,
注意在其他组件中调用这个函数,必须在它本身的脚本把start这个方法公开;
Player.Start(); //调用player脚本中的方法 ,可以调用脚本中内置的方法,也可以调自定义的方法。注意的是调用的脚本中其他组件被经验了,而那个方法中涉及这个组件,在执行方法时,这个组件是无效的,比如说,在游戏物体的另一个物体中写了一个碰撞的方法,但碰撞器是禁用的,当执行这个碰撞的方法时,不会触发碰撞事件;
2.访问组件里面的属性
修改刚体的质量:
Rigidbody rgd = player .GetComponent<Rigidbody>();
rgd.mass = 100;
1.Transfrom t = GetComponent<Transform>();
2.Collider [ ] = GetComponts(Collider)(); //得到所用的碰撞器;
3.GetComponent<BoxCollider>();
4.拖拽赋值
public player player_script ; //在inspector面板中可以拖拽赋值;
可以通过代码获取前面的禁用的脚本;
GetComponent<Player>();
注意:不管游戏物体里的所有组件都能获取,不管是否被禁用;
5.获取子物体身上的组件:
GetCompoentsInChildren<>();
GetCompoentInChildren<>();
6.获取另外一个物体身上的组件
先通过拖拽获得,或其他方法获取其他游戏物体;
首先获取一个游戏物体:
public GameObject player; //player是一个命名,不是其他物体的名字;其实这里的GameObject相当于ue4中的actor;
play.GetComponent<Rigidbody>() //获得其他物体身上的组件;
1.遍历
foreach (Transform t in children){
print(t);
if(t!=transform)
Destory(t.gameobject);
} //其中t 代表数组元素序号 在里面输出一下
1.销毁子物体
Transform【】children =transform.GetComponentsInChildren<>();
for(int i = 0; i < children.Length; i++){
GameObject.Destroy(childeren[i].gameobject);
}
发现父对象也消失,
添加以条件
if(children【i】!=transform){
GameObject.Destroy(childeren[i].gameobject);
}
2.while
int i=0;
while(i<children.Length){
if(children.Length!=transform)
{GameObject.Destroy(children[i].gameobject); }
i++;
}
do{
}while();
while 和dowhile 的区别在与while满足条件时,才会执行,dowhile 时先执行,如果满足条件,将会继续执行。
注意:Transform是一个类,用来描述物体的位置,大小,旋转等等信息。
transform是Transform类的对象,依附于每一个物体。
Translate是Transform类的一个方法,用来改变物体的位置。
1.if用于某个范围的,比较有规律性的条件
Switch方法:
int i =3;
switch(i){
case 1:
print("i=1");
break;
case 2:
print("i=2");
break;
case3;
print("i=3");
break;
default:
print("default");
break;
} //注意当case中的条件不满足的时候,会执行default,这个相当于else;
改为枚举类型变量
switch (heroType){
case HeroType.Soldier;
print("int =1");
break;
记住break一定要写上,break是用来跳出的;
3.有一种情况只能使用if,加血,条件是一个范围,
比如血量是小于20的时候,能够使用医疗箱,血量在20和40之间使用绷带,等等只能使用if判断,能使用switch的地方,可以使用if,当if用作范围判断时,switch不能判断。
1.if方法
int heroType=0; //1solder 2master 3 assassin 4tank 5shooter;
if(heroType==1){
}else if (heroType==2){
}else if(heroType==3){
}elseif(heroType==4){
}else{
}
但if语句没有更大括号的时候,默认后面的跟着的一条语句,只能是一条。
比如:if(heroType==1)
print("Hello");
等价于
if(heroType==2){
print("Hello");
}
2.枚举类型
先定义枚举类型: enum HeroType{
Solider,
Master,
Assassin,
Tank,
Shooter
}
HeroType heroType =HeroType.Soldier;
if(heroType==HeroType.Soldier){
}else if (heroType==HeroType.Master){
}else if(heroType==HeroType.Assassin){
}elseif(heroType==HeroType.Tank){
}else{
}
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,与程序语法相关的;