目录

生命周期

# 生命周期

  • 初始化阶段
    1. Awake
    2. onEnable
    3. Start
  • 物理阶段
    1. FixedUpdate
    2. WaitForFixedUpdate
    3. OnTriggerXXX
    4. OnCollisionXXX
  • 输入事件
    1. onMouseXXX
  • 游戏逻辑
    1. Update
    2. LateUpdate

# 初始化阶段

# Awake

执行时机:创建游戏对象 -> 立即执行(早于Start) 作用: 初始化,仅执行一次 开始游戏的一刻执行,游戏会先将所有物件的Awake事件执行一次,然后再执行下一个生命周期。

在Unity 2020.3.27版本中,以倒序方式执行,即

  1. Awake Directional Light
  2. Awake Main Camera
  3. Start - Directional Light
  4. Start - Main Camera
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyScript : MonoBehaviour
{

    private void Awake()
    {
        Debug.Log("AWAKE" + Time.time + "---"+this.name);
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13

# onEnable

执行时机:每次启用脚本时 作用: 初始化

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyScript : MonoBehaviour
{
	private int i;
    private void Start()
    {
        Debug.Log("Start" + Time.time + "---"+this.name);
		i = Random.Range(1,200);
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# Start

执行时机:创建游戏对象 -> 脚本启用 -> 才执行 作用: 初始化,仅执行一次

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyScript : MonoBehaviour
{
	private int i;
    private void Start()
    {
        Debug.Log("Start" + Time.time + "---"+this.name);
		i = Random.Range(1,200);
    }

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14

# 物理阶段

# FixedUpdate

执行时机:固定时间执行一次,通常0.02秒(不建议修改时间) **作用:适用于做物理操作,例如物件的旋转、移动等行为,不受到渲染影响 ** 设置频率: "Edit"-> "Project Setting" -> "Time" -> "Fixed Timestep"

Time.timeScale=0时,FixedUpdate将不会再执行。但Update则仍然会执行!这种差异能用于制作时停效果!其原理相当于将Time.deltaTime设置为0,如果你希望某个物体(玩家)能在时停时照常移动,可以使用fixedDeltaTime

# 输入事件

# onMouseXXX

绑定的物品必须要有碰撞器(Collider)才能触发

  1. OnMouseEnter 鼠标移入
  2. OnMouseOver 鼠标经过
  3. OnMouseExit 鼠标离开
  4. OnMouseDown 鼠标按下
  5. OnMouseUp 鼠标抬起

# 游戏逻辑阶段

# Update

执行时机:渲染帧执行,执行间隔不固定 **作用:适用于做游戏逻辑 **

# LateUpdate

执行时机:Update函数被调用后执行 **作用:适用于跟随 **

# 场景渲染阶段

# OnBecameVisible / OnBecameInvisible

执行时机:当相机看到/看不到某物品的Mesh render时触发,以一帧为单位

# 结束阶段

# OnDisable

执行时机:当对象变为不可用或者附属游戏对象非激活状态时,此函数被调用

# OnDestroy

当脚本销毁或者附属游戏对象被销毁时调用

# OnApplicationQuit

程序退出时调用

最近更新
01
基本知识
07-18
02
卷积神经网络识别图像
07-18
03
损失函数
07-18
更多文章>