unity中生命周期函数(事件函数)的使用

生命周期函数(事件函数)

在这里插入图片描述

对变量赋值的顺序(左边最先赋值,右边最后赋值,以此类推):

变量声明并直接赋值->检视面板赋值->Awake>OnEnable->Start->外部赋值

我们一般对一个对象赋值,或者说想要从外部对一个对象的属性或者成员变量的值进行更改的前提是,已经有了这个对象(意味着start方法已经调用),所以外部赋值会后于Start方法进行调用

1.Reset事件

调用情况: 此函数只能再编辑器模式下(不允许)调用
调用时间: 在脚本第一次挂载到对象或使用了Reset()命令后。
调用次数: 会调用Reset一次并初始化所有值
作用:提供默认值,重置数值。

public class No2_EventFunction : MonoBehaviour
{
    
    
    public float value=10;
  private void Reset()
    {
    
    
        Debug.Log("调用了Reset");
    }
}

2.Awake事件

调用情况:
a.在加载场景时初始化包含脚本的激活状态的GameObject时
b.GameObject从非激活转变为激活状态
c.在初始化使用Instantiate创建的GameObject之后
调用时间: 在脚本实例的生存期内,Unity 仅调用 Awake 一次。脚本的生存期持续到包含它的场景被卸载为止。
调用次数: Unity 调用每个GameObject的Awake的顺序是不确定的,人为干涉(即设计)来保证程序的正确性和稳定性
作用: Awake 来代替构造函数进行初始化,在Unity这里,组件的初始化不使用构造函数
游戏中的作用: 可以加载UI所需要的资源

private void Awake()
    {
    
    
        Debug.Log("调用了Awake方法"); 
    }

3.OnEnable事件

调用情况:
a.游戏物体被激活
b.脚本组件被激活
调用时间、次数: 每次游戏物体或者脚本被激活都会调用一次
作用: 重复赋值 变为初始状态
游戏中的作用: 创建对象池。如果怪物被销毁了,在某些情况下(如复活),再次激活这个游戏物体可以初始怪物的血量

public class No2_EventFunction : MonoBehaviour
{
    
    
    public float currentHP=10;
    
    private void OnEnable()
    {
    
    
        Debug.Log("调用了OnEnable方法");
        currentHP = 100;
        Debug.Log("当前血量为:"+currentHP);
    }
}

4.Start事件

调用情况:
a.游戏物体被激活
b.脚本组件被激活
调用时间、次数: 在脚本实例激活时在第一帧的Update之前被调用
作用: 后于Awake执行,方便控制逻辑的前后调用顺序

public class No2_EventFunction : MonoBehaviour
{
    
    
    public float attackValue=10000;
    void Start()
    {
    
    
        Debug.Log("调用了Start方法")
        attackValue = 3;
    }
}

5.Update事件

调用情况:
a.游戏物体被激活
b.脚本组件被激活
调用时间、次数: 每帧调用,是最常用函数,每秒调用60次左右(根据当前电脑的的性能和状态)
作用: 实时更新数据,接受输入数据

 void Update()
    {
    
    
        Debug.Log("调用了Update方法");
    }

6.LateUpdate事件

调用情况:
a.游戏物体被激活
b.脚本组件被激活
调用时间、次数: LateUpdate在调用所有Update函数后调用, 每秒调用60次左右。
作用: 安排脚本的执行顺序,比如摄像机跟随,一定是人物先移动了,摄像机才会跟随

        private void LateUpdate()
    {
    
    
        Debug.Log("调用了LateUpdate方法");
    }

7.OnDisable事件

调用情况:
a.游戏物体被禁用
b.脚本组件被禁用
c.游戏物体被销毁
调用时间、次数: 满足调用情况时即时调用一次
作用: 用于一些对象的状态重置,资源回收与清理

    private void OnDisable()
    {
    
    
        Debug.Log("调用了OnDisable方法");
    }

8.OnApplicatoinQuit事件

调用情况:
a.在程序退出之前所有的游戏对象都会调用这个函数
b.在编辑器中会在用户终止播放模式时调用
c.在网页视图关闭时调用
调用时间、次数: 满足调用情况时即时调用一次
作用: 用于处理一些游戏退出后的逻辑
注意!!!: 需要在项目打包后才可测试

    void OnApplicatoinQuit()
    {
    
    
        Debug.Log("OnApplicationQuit");
    }

9.OnDestroy事件

调用情况:
a.场景或游戏结束
b.停止播放模式将终止应用程序
c.在网页视图关闭时调用
d.当前脚本被移除
e.当前脚本挂载到的游戏物体被删除
调用时间、次数: 满足调用情况时即时调用一次
作用: 用于一些游戏物体的销毁

    void OnDestroy()
    {
    
    
        Debug.Log("OnDestroy");
    }

猜你喜欢

转载自blog.csdn.net/qq_43007056/article/details/130758445
今日推荐