一、Unity小知识点
1、静态方法,静态字段属于该类,不属于该类的实例
2、常用文件夹
Scripts 脚本文件夹
Prefabs 预设文件夹
Materials 材质文件夹
Scenes 场景文件夹
Textures 贴图文件夹
Models 模型文件夹
Animations 动画文件夹
Audio/Musics 音乐(音效)文件夹
Resources 资源文件夹
SkyBox 天空盒
Editor 自定义文件夹
3、MonoBehaviour类:是一个基类,所有 Unity 脚本都派生自该类
作用:让脚本可以像组件一样挂在物体上。
包含脚本生命周期:
Awake()函数是加载场景时运行,就是说在游戏开始之前初始化变量或游戏状态。
OnEnable():当对象变为可用或激活状态时被调用
Start()函数是在第一次启动时执行,用于游戏对象的初始化,在Awake()函数之后。
FixedUpdate()与Update()函数相似,但是每个固定物理时间间隔调用一次,用于物理状态的更新。
Update()是在运行时每一帧必执行的函数,用于更新游戏场景和状态。
LateUpdate()是在Update()函数执行后再次被执行。
OnGUI():渲染和处理OnGUI事件
OnDisable():当前对象不可用或非激活状态时被调用
OnDestroy():当前对象被销毁时调用
4、 Collision事件
OnCollisionEnter函数:当碰撞体或者刚体与其他碰撞体或者刚体开始接触时调用
OnCollisionStay函数:当碰撞体或者刚体与其他碰撞体或者刚体保持接触时调用
OnCollisionExit函数:当碰撞体或者刚体与其他碰撞体或者刚体停止接触时调用
5、 Trigger事件
OnTriggerEnter函数:当其他碰撞体进入触发器时调用
OnTriggerStay函数:当其他碰撞体停留触发器时调用
OnTriggerExit函数:当其他碰撞体离开触发器时调用
6、查找方法:
通过对象名称(Find方法)GameObject.Find
通过标签获取单个游戏对象(FindWithTag方法)
通过标签获取多个游戏对象(FindGameObjectsWithTags方法)
7、销毁组件:Destroy(cube.GetComponent<Rigidbody>());
8、Transform类:
transform.position:指定物体在世界坐标下的位置。
transform.Translate:指物体相对位移的单位。
transform.Rotate:指物体旋转。
transform.eulerAngles:指物体的角度。
transform.localScale:指物体的缩放,注意的是缩放各个轴不能为0,否则会消失
9、 Time类:
Time.time:当前游戏已经运行的时间
Time.deltaTime:上一帧消耗的时间;
timeScale:时间流逝的缩放。可用于慢动作效果。
二、C# :存储相同类型元素的固定大小的顺序集合
1、 一维数组:
string[] arrA = new string[3];//声明一个长度为3的字符串数组
int[] arrB = new int[5];//声明一个长度为5的整型数组
int[] arrA1 = { 1, 2, 3 };//第一种赋值方法
int[] arrA2 = new int[5] { 1, 2, 3, 4, 5 };//第二种赋值方法
int[] arrA3 = new int[] { 1, 2, 3, 4, 5 };//第三种赋值方法
//常用赋值
int[] arrAx = new int[3];
arrAx[0] = 10;
arrAx[1] = 20;
arrAx[2] = 30;
//foreach只能用来遍历数组中的数值,不用来赋值
foreach (var item in arrAx)
{
Console.WriteLine(item);
}
for (int i = 0; i<arrAx.Length; i++)
{
Console.WriteLine(arrAx[i]);
}
2、 二维数组:
//定义
int[,] arr1 = new int[5, 5];
//赋值
arr1[0, 0] = 0;
arr1[0, 1] = 1;
int i = 1;
for (int iX = 0; iX < 5; iX++)
{
for (int iY = 0; iY < 5; iY++)
{
arr1[iX, iY] = i++;
}
}
//遍历
for (int iX = 0; iX < 5; iX++)
{
for(int iY = 0; iY < 5; iY++)
{
Console.WriteLine("arr1[{0},{1}]={2}",iX,iY , arr1[iX, iY]);
}
}
3、 多维数组
4、 值类型 :存储在栈中,可以直接分配给一个值, 值类型的变量不能为null,必须有一个确定的值
int a = 10;
int b = a;
Console.WriteLine("b=" + a);
a = 20;
Console.WriteLine("b=" + b);
5、 引用类型 :存储在堆中 存的是引用
如:字符串:string, 基类:object dynmic 类:class 接口:Interface 数组:Int[] ,String[] ,引用类型赋值前都是null
Man m1 = new Man();
m1.name = "张三";
Man m2 = m1;
Console.WriteLine("m2.name=" + m2.name);
m1.name = "李四";
Console.WriteLine("m2.name=" + m2.name);
6、 枚举类型
int xinQi = 1;//1234567
//主角状态
ZhuangTai zhuJue = ZhuangTai.正常;
Console.WriteLine("zhuJue=" + zhuJue);
ZhuangTai diRen = new ZhuangTai();
Console.WriteLine("diRen=" + diRen);
//new:1 实例化对象 2 初始化对象
int[] a = new int[10];
a[0] = 10;
a[1] = 20;
a = new int[10];
Console.WriteLine("a[0]=" + a[0]);
7、构造函数:对实例化出来的对象进行初始化
①构造方法要用public修饰,不能用
private修饰;
②构造方法没有返回值,且连void也不能写;
③构造方法的方法名字必须跟类名一样;
④构造方法是可以有重载的。
8、析构函数:常用清理一个对象
①析构方法不能有任何参数;
②析构方法无返回值也无访问修饰符;
③析构方法由系统自动调用;
④析构方法可以不写。