Unity3D-相关函数功能

函数功能

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用法,如下。
Unity3D-相关函数功能_第1张图片

重要类简单介绍

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场景,结果如下。
Unity3D-相关函数功能_第2张图片
点击Setting按钮,执行相关操作。
Unity3D-相关函数功能_第3张图片
输出的组件信息
Unity3D-相关函数功能_第4张图片

//查找具有父子关系的对象的组件
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);

你可能感兴趣的:(Unity,游戏开发)