游戏物体和组件
游戏物体
组件
组件组成游戏物体
Transform组件是游戏物体的必须基本组件
自定义组件
自定义创建的继承MonoBehaviour的C#的脚本文件
自定义组件不能直接实例化去使用
VS加载解决方案失败?
重启VS
声明周期函数
物体(脚本)生命周期
从创建开始,到被删除结束
生命周期函数
概念
是组件或游戏物体的整个生命周期过程中(从创建到销毁),在某种条件下自动执行的函数
在整个生命周期过程中某些条件下自动调用的函数
常用生命周期函数
Awake
在组件唤醒时执行一次,构造时
OnEnable
启用组件时,执行一次,多次启用就执行多次
Start
程序运行的时候调用 只调用一次
FixedUpdate
每固定时间(物理帧率)执行一次
物理帧率:计算与物理相关的频率 默认固定时间调用0.02s
Update
每帧执行一次
渲染帧率:屏幕刷新的频率
LateUpdate
每帧执行一次, 必须所有组件的Update全部执行之后才会调用
OnDisable
禁用组件时,执行一次,多次禁用就执行多次
OnDestroy
销毁组件或销毁游戏物体时执行一次
控制台
Clear:清除控制台信息
Collapse:折叠信息
Clear On Play:运行时清除
Error Pause:遇到错误停止项目
控制台输出
GameObject类
所有的游戏对象都是GameObject
gameobject
是GameObject的具体实例,表示当前所在的组件所挂的游戏物体
name
获取和修改物体的名字
tag
获取或修改物体的标签
自定义标签
选择小“+”号
点击save
Find(“游戏物体”)
全局查物体
游戏物体名支持层级结构,例如:“Game/Cube”
失活的物体不能被找到
Test是失活状态
void Start () { GameObject g = GameObject.Find("GameObject"); g.name = "cc"; GameObject g2 = GameObject.Find("Test"); g2.name = "TT"; }
结果:
失活状态的差找不到的
注意
比较消耗性能,尽量少用
SetActive(true/false)
激活或失活物体
void Start () { GameObject g = GameObject.Find("Main Camera"); g.SetActive(false); }
快速获取物体
定义公共变量,拖拽获取
选择游戏物体拖拽倒变量的位置
如:
全局查找目标标签的物体
GameObject.FindGameObjectWithTag("Enemy");
GameObject.FindGameObjectsWithTag("Enemy"); 返回数组
void Start () { GameObject g = GameObject.FindGameObjectWithTag("En2"); g.name = "Tag"; GameObject[] gArr = GameObject.FindGameObjectsWithTag("Enemy"); for (int i = 0; i < gArr.Length; i++) { gArr[i].name = "TT" + i; } }
结果:
Transform
类,组件类型
游戏物体的最基本组件
空间变换组件:描述物体的位置、旋转、大小
transform
Transform类的具体实例,表示当前所在的组件所挂的游戏物体上的transform组件
transform.Find("物体名字")
从当前物体中查找子物体,只能查找一级
游戏物体名支持层级结构,例如:“Game/Cube”
失活的物体可以被找到
查找物体总结
通过GameObject去查找
通过transform去查找
通过GameObject去查找就使用GameObject类型的变量存储,
通过transform去查找就使用Transform类型的变量存储
组件的添加获取删除
添加
游戏物体对象.AddComponent<组件类型>()
哪个游戏物体对象调用AddCompoent就是在哪个游戏物体上添加组件
步骤
1.找到游戏物体
2.通过游戏物体去添加组件
获取
游戏物体对象.GetComponent<组件类型>()
哪个游戏物体对象调用GetCompoent就是在哪个游戏物体上获取组件
删除-Destroy
Destroy(组件对象(变量))
参数是组件:删除组件
参数是物体:删除物体
克隆--Instantiate
Instantiate(GameObject类型的对象)
一个参数:克隆物体,生成在原物体的位置
三个参数:(目标物体,位置,旋转角度)