函数功能
1.每隔固定时间执行一次,时间间隔固定(0.02s),时间间隔可以修改。
适用性:适合对物体作移动,旋转等物理操作。 函数执行不受渲染影响。
private void FixedUpdate()
{Debug.Log(Time.time);
}
- 设置更新频率:Edit–>Project Setting -->Time -->Fixed Timestep;
- OnCollisionXXX 碰撞:当满足碰撞条件是调用;
- OnTriggerXXX触发:当满足触发条件是调用。
2.每次渲染帧时执行,执行间隔不固定。也可以吧移动,旋转操作放到该函数,便宜开发。
适用性:处理游戏的逻辑。
private void Update()
{}
3.延迟更新,在Update函数被调用后执行;
适用性:适用于跟随逻辑。
private void LateUpdate()
{}
4.输入事件
- OnMouseEnter
- OnMouseOver
- OnMouseExit
- OnMouseDown
- OnMouseUp
private void OnMouseDown()
{Debug.Log("Mouse Down.");
}
//物体需要有碰撞检测器
5.场景渲染
- OnBecameVisible当可见:当Mesh Renderer在任何摄像机上可见是调用;
- OnBecameInvisible当不可见:当Mesh Renderer在任何摄像机上都不可见时调用。
6.结束阶段
- OnDisable当不可用:对象变为不可用或附属游戏对象非激活状态时此函数被调用。
- OnDestroy当销毁:当脚本销毁或附属的游戏对象被销毁时调用。
- OnApplicationQuit当程序结束:应用程序退出时调用。
注意:
具体用法可以查看开发文档,点击Unity中的如下按钮
可联网查看API用法,如下。
重要类简单介绍
Component
- 添加一个Cube对象,添加该脚本,如下代码,展示了如何操作Cube的所有组件的相关信息。
- 由于类的继承关系,对于继承自Monobehaviour的类,对于其上的继承关系,包含了很多父类(多级)的相关属性和方法。
private void OnGUI(){if(GUILayout.Button("Setting")){//设置Cube的位置和材质this.transform.position = new Vector3(0,5,0);this.GetComponent<MeshRenderer>().material.color = Color.red;//获取Cube的所有组件var AllComponent = this.GetComponents<Component>();foreach(var item in AllComponent){print(item);}}}
运行Unity场景,结果如下。
点击Setting按钮,执行相关操作。
输出的组件信息
//查找具有父子关系的对象的组件
GetComponentsInChildren<MeshRenderer>();
GetComponentsInParent<MeshRenderer>();
Transform
包括操作物体的位置,状态的函数。
//可以直接遍历父子物体的Trasform
foreach(Transform child in this.transform);//物体相对于世界坐标原点的位置
this.transform.position;//物体相对于父物体轴心点的位置
this.transform.localPosition;//相对于父物体的缩放比例
this.transform.localScale;//物体与模型的缩放比例(自身缩放比例*父物体缩放比例)
this.transform.lossyScale;//在自身的坐标系中,向位置(x,y,z)移动
this.transform.Translate(x,y,z);//在世界坐标系中,向位置(x,y,z)移动
this.transform.Translate(x,y,z,Space.World);