Unity 比 Awake 更早被運行的函數....


Unity 5.0開始增加了RuntimeInitializeOnLoadMethodAttribute,這樣就很方便在遊戲初始化之前做一些額外的初始化工作,比如:Bulgy參數設置、SDK初始等工作。

1. 我們來看看他所處生命週期的位置:

public class ExampleClass : MonoBehaviour
{
    private void Awake()
    {
        Debug.Log( "Awake" );
    }

    private void OnEnable()
    {
        Debug.Log( "OnEnable" );
    }

    private void Start()
    {
        Debug.Log( "Start" );
    }

    [RuntimeInitializeOnLoadMethod]
    private static void OnRuntimeMethodLoad()
    {
        Debug.Log( "RuntimeInitializeOnLoadMethod" );
    }
}

結果爲:
在這裏插入圖片描述

2. 它還有兩個屬性:RuntimeInitializeLoadType.BeforeSceneLoad | RuntimeInitializeLoadType.AfterSceneLoad:

public class ExampleClass : MonoBehaviour
{
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    static void OnBeforeSceneLoadRuntimeMethod ()
    {
        Debug.Log("Before scene loaded");
    }

    void Awake()
    {
        Debug.Log("Awake");
    }
    void OnEnable()
    {
        Debug.Log("OnEnable");
    }

    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)]
    static void OnAfterSceneLoadRuntimeMethod()
    {
        Debug.Log("After scene loaded");
    }

    [RuntimeInitializeOnLoadMethod]
    static void OnRuntimeMethodLoad()
    {
        Debug.Log("RuntimeMethodLoad: After scene loaded");
    }

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

}

結果爲:
在這裏插入圖片描述
3. 想必看到這裏你就知道怎麼用了吧,那趕緊用起來吧,騷年

4. 順便附一張MonoBehaviour的生命週期圖
在這裏插入圖片描述

5. 順便在記錄一下Unity提供的其他Attribute。如果你想搞點插件什麼的,說不定用的上

注意: 在使用的時候"XXXXAttribute"的時候需要去除”Attribute“使用。
想知道爲什麼。希望這篇文章對你有用:https://blog.csdn.net/KiTok/article/details/90324325

屬性名 功能
AddComponentMenu 導航欄菜單
ContextMenu 右鍵菜單
HeaderAttribute 爲屬性添加頭描述
HideInInspector 可以讓public變量在Inspector上隱藏,無法在Editor中進行編輯
MultilineAttribute 支持輸入多行文本
RangeAttribute 限定輸入值的範圍
RequireComponent 組件依賴,使用該組件後自動添加依賴組件
RuntimeInitializeOnLoadMethodAttribute 上文說嘍
SerializeField 強制對變量進行序列化,即使變量是private
SpaceAttribute 增加空位
TooltipAttribute 提示信息,當鼠標移到Inspector上時顯示相應的提示
InitializeOnLoadAttribute 允許在Unity加載時初始化編輯器類,而不需要用戶進行操作
InitializeOnLoadMethodAttribute Unity啓動而無需用戶操作,就可以在項目中運行一些編輯器腳本代碼
MenuItem 導航欄的菜單項
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章