Input.GetAxis("Horizontal")
unity提供了这个方法,可以判断键盘上按下的左右键
Input.GetAxis("Horizontal")
unity提供了这个方法,可以判断键盘上按下的左右键
由于自定义class没有继承monobehavior,所以class下的method中是不可以通过print来输出的,只能通过Debug.Log()来进行输出
如果自定义class中的method需要在该class外进行调用,那么一定要记得定义成public
利用类声明的变量叫做对象
要访问某个class中的字段,可以考虑以下这种方法:
在class中把该字段定义为public,那么在calss外就可以
对象.变量名
由于是public,也可以在class外对class内的字段进行定义、修改
每个csharp脚本里都可以有多个类。创建时自动产生的,和文件名相同的类,可以理解为是主类
class 类名{
string name;
int hp;
# 以上两个被称作字段
}
在别的class里进行自定义类型变量声明:
类名 变量名 = new 类名();
unity中有一个build-in class: Vector3
一个Vector3在定义时需要传入x, y, z的三个变量
eg.
void CreateEnemy ( Vector3 pos){
print("设置敌人位置"+pos);
}
void Start (){
CreateEnermy(new Vector3(1, 4, 6));
}
枚举类型:
定义:
enum RoleType {
Mag,
Soldier,
Wizard
}
调用:
RoleType rt = RoleType.Mag;
这样就可以增加代码的可读性,而不是:
int roleType = 0; //0代表魔法师,1代表...
method基本结构:
返回值 方法名(参数)
{
方法体
}
获得数组长度的方法:数组名.Length
声明空数组:
eg. int[] hp = { };
更改数组里元素的内容:类比访问
声明数组的第二种方法:
eg. int[] hp = new int[10]; 创建一个数组,数组长度为10(此时数组会按照默认值0进行初始化)
int[] hp = { };
int[] hp;
以上这两个语句是不同的,前者是已经定义好了,后者是没有定义,相当于是不存在的
声明数组的第三种方式:
eg. int[] hp = new int[5]{1, 2, 3, 4, 5}
那么此时后面输入的参数个数一定要满足定义时要求的长度
数组声明: 类型[] 数组名 = {数组值}
eg. int[] hps = {100, 20, 80, 90, 30};
通过索引访问数组: 数组名[索引]
比较运算符:>, <, >=, <=. ==, !=
自增/减运算符:++,--
加减乘除
对于除法来说,如果是两个整数相除,且不能整除的情况,小数部分会被自动舍去,输出一个整数
(小数不存在这个问题)
一个整型和一个float类型相加,返回的结果是float类型,这个结果只能由一个float类型接收而不能用int类型
eg. float res4 = 3 + 3.2f
加法运算也能用于连接字符串
bool类型:只有true和false两种类型
初始化:bool isDie = false;
char类型:
初始化:char c = 'c';
(char类型的话只能是单引号,如果是双引号会被理解成字符串,从而产生错误)
string name = "ShallowDream"
(string类型的话就只能是双引号)
C#中的数据类型:
整型:
short 整数(16位)
int 整数(32位) *最要求掌握的
long 长整数(64位)
(不同整型的主要区别在于范围不同。
至于为什么存在那么多类型而不是只用一个最大位数的,是因为我们需要尽量去提前考虑某个变量可能的变化范围。
毕竟位数多,所占的内存大小就大。如果内存过大,对于计算机跑游戏也是负担。)
浮点型:
float 用于较小的浮点数 *最要求掌握的
double 比float大,15位
float hp = 3.4,这样是会报错的,因为会默认3.4为double类型
所以这个语句正确的写法应该是这样:
float hp = 3.4f
声明变量:除了任务8中的声明和赋值同时进行,也可先声明,再赋值
使用变量之前一定要记得初始化
VS组合快捷键:ctrl + k ctrl + c,用于全部注释
声明变量:类型 名字 [= 赋值]
变量名不能以数字开头,可以含数字、字母、下划线
日志输出:第一种方式,直接通过print进行输出。这个print是有限制的,只能在组件里进行使用
只要class名后面有MonoBehaviour,这个class里就可以进行print
日志输出语法:Debug.Log();
print只有在MonoBehaviour里才能用,Debug.Log()方法则可以在任意场合使用
Debug.LogWarning()也是日志输出,跟Log的主要区别在于标识不同,一般用于警告,级别更加严重
Debug.LogError()也是日志输出,级别是最严重的
通过print只能输出一般的日志,通过Debug.Log则可以输出以上提到的不同级别的日志
注释不要破坏原有的语法结构
单行注释://
多行注释:/* */
VS在多行注释时回车的时候会自动生成*,这个只是帮助保持注释的整洁性
会根据文件名去查找class
所以说如果文件名和class名不相同,就无法查找到class
前面的using部分是命名空间,namespace
后面的部分是类,class
Start()只会执行一次,作为开始的时候的初始化
Update()每一帧都会执行一次
//用来写注释
游戏理大概一秒有50帧