脚本的基本结构:
声明一个类
class GameDate
给一个命名空间,把声明的类放在里面
namespace MyGame
{
class GameData{ }
}
在start里调用一下GameData,是没有办法访问的,因为它在MyGame下,没有引入命名空间,所以要引用一下命名空间:using MyGame;
脚本的基本结构:
声明一个类
class GameDate
给一个命名空间,把声明的类放在里面
namespace MyGame
{
class GameData{ }
}
在start里调用一下GameData,是没有办法访问的,因为它在MyGame下,没有引入命名空间,所以要引用一下命名空间:using MyGame;
类中的方法:
public void Move( )
{ Debug.Log(name+"正在移动"};
类的使用:
Enemy enemy1 = new Enemy( );
enemy1.name;
//.name通过对象看对象里有哪些功能,有name 就可以访问到了
enemy1.name = "玛丽";
print(enemy1.name);
//在没有给Enemy赋值时,ememy的名字默认为null,即默认为没有
Enemy enemy2 = new Enemy( );
enemy2.name = "小二";
print(enemy1.name+" - "+enemy2.name);
类的创建、声明和构造:
class Enemy
{ string name;
int hp;}
//由名字跟hp就组成一个类
类的使用:
void start( )
{
int hp = 100;
Enemy enemy1 = new Enemy( );
//Enemy类 enemy1 赋值 new方法
}
方法中的返回值:
void Add(int a,int b)
{int res = a+b;}
在start方法里定义
Add(10,67); //这里是示例
print(res);
//在start里不能直接调用res方法,因为它是在Add方法里的。
∴要给它一个返回值
对于一个方法只能有一种返回值
返回的类型要名字一致:
string Add(int a, int b)
{ int res = a+b;
return res;
//这里res不对,因为值为字符串类型,所以应该返回的是字符串类型的值
return string;
在start方法里定义:
int res = Add(10,67);
print(res);
枚举类型:
类型区分第一种:
定义一个变量
int roleType = 0;//0魔法师1战士2巫师3坦克
但是这样比较麻烦
∴通过枚举类型
枚举类型:
enum RoleType
{ Mag,
Soldier,
Wizard }
然后就可以声明变量了
RoleType rt = RoleType.Mag;
rt = RoleType.Soldier;
//声明的Mag变量
//声明的Soldier变量,这样不仅方便辨识名称,还方便后期修改
方法的定义和调用:
方法的第一个作用:把这些代码放在同一个值下,方便重复调用
//返回值 方法名(参数)
定义一个方法:
void Test( )
{ print("Test方法被调用了");}
调用方法:
void start( )
{ Test( ); }
例如
定义一个方法:
void CreateEnemy()
{print("创建敌人");
print("创建敌人位置");
print("创建敌人的初始属性");}
调用方法:
void Test( )
{ CreateEnemy();};
int[ ] hps = new int [8] { 1010,2,2,32,3,2,3}
for( int i = 0; i<8; i++)
{ print ( hps[i] ); }
//数组与for循环的结合
for( int i = 0; i<hps.Length; i++)
{ print ( hps[i] ); }
//∵用了hps.length表示数组的长度,所以数组的长度不受限制
for循环
print("创建了一个敌人");
//for循环就是一条指令要执行很多次
for(int i = 1; i<=10; i++)
{ }
//{} 是循环体
//i 是用来控制执行循环体的次数的
所以
for(int i = 1; i<=10; i++)
{ print("创建了一个敌人"); +i}
//这样是字符串跟数据的索引的结合,输出的结果为"创建了一个敌人1"随着i的增加会变为2.3.4...
如果想执行100次
for(int i=1, int <=100; i++)
{ print("创建了一个敌人"); }
数组声明的第二种方式:
int[ ] hps = null ;
//如果不想构造这个数组的话,可以给一个空值
int[ ] hps2={ };//没有指出数组的长度
print(hps);
print(hps2);
数组声明的第三种方式:
int[ ] hps = new int[5] {34,2,324,3,2};
//不仅有数组的长度,还有数组里每个元素的值
长度必须要跟后面的值是对应的
数组和声明使用:
//数组 类型[ ] 数据名 = {数组值}
int[ ]hps={100,20,80,90,30};//数组长度为5
//通过索引来访问数据 ,从0号开始,通过数组名[索引],∵数组长度为5,0,1,2,3,4,∴数组的最大索引为4
//如果想索引第二个数据,即20→hps[1]
if语句
if(hp<=0)
{print("播放死亡动画");}
else
{print("播放行走动画");}
比较运算符:
int hp=100; //血量100
bool res=hp>0;//当血量>0时
print(res);//输出res
补充内容:
int hp=100;
hp+=10 ; //hp=hp+10;
print(hp);
//hp=100;
//hp=hp+10是hp=100所以hp+10,就是hp为110
//输出hp110
hp-=100; //hp=hp-100
print(hp);
//hp为110,hp-100,所以输出的值为10
加减乘除的数据运算:
int a=90;int b=10;
int res=a+b;
print(res);
int res1=a-b;
int res2=a*b;
int res3=a/b;
print(res1);
print(res2);
print(res3);
对于除法来说,/,如果相除之后是小数,不符合int变量类型,所以两个整数相除,小数部分会被自动舍去
3+3.2f;
//一个整数类型跟浮点类型相加的时候,float类型比整数类型大的时候,定义为float类型
float res4=3+3.2f;
∴多个数据类型运算,返回结果类型是数据类型大的
字符串:string str1="my name is"
string str2="siki"
string strRes=str1+str2;
print(atrRes);
3.bool类型
bool来表示true或false
bool isDie=false;
4.字符串类型:
string name="绝地战士”;
//用英文双引号括起来的字符
数据类型:
1.整数类型:
一般整数类型选int类型,范围不会超过这个
如果血量不超过100,处于节约内存方面的考虑,可以使用sbyte变量
如果是-30000~30000,可以用short变量
总体来说变量根据需要选择
2.浮点类型
浮点类型有两种double float
float hp2=3.4f;
//小数后面跟f是为了证明是float 类型,否则就默认为double类型,这样前后类型不一致,系统没办法操作
2.先声明变量再赋值
int hp;
hp=100;//得初始化一下变量,不然输出报错
print(hp);
int类型是整数类型
变量:
如定义一个血量:
int hp=100;
int变量类型+hp变量名称=变量的值
“=”是赋值
这样print(hp)就能输出100,
输出日志:
1.print:输出正常的日志
:把Log分成了三类
2.Debug.Log
Debug.LogWarning:在输出时同时给警示
Debug.LogError:在输出时给错误提示
多行注释:/*作为注释开头,*/作为注释结尾