Unity的RuntimeInitializeOnLoadMethod屬性初探

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

 

先來看一下它的生命週期編輯器

sing UnityEngine;

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" );
    }
}

輸出結果ide

image

 

而它還有兩個屬性:RuntimeInitializeLoadType.BeforeSceneLoad  | RuntimeInitializeLoadType.AfterSceneLoad網站

using UnityEngine;

public class InitTest  : 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");
    }

}

輸出結果ui

image

 

Before –> Awake –> OnEnable –> After –> RuntimeMethodLoad –> Start。spa

 

附一張腳本的生命週期圖(來源:官方網站3d

 

 

Unity中提供的Attribute有不少,RuntimeInitializeOnLoadMethodAttribute只是其中的一種。若是本身寫程序擴展編輯器的功能,就須要瞭解這些屬性。經常使用的有:code

一、AddComponentMenu 導航欄菜單htm

二、ContextMenu 右鍵菜單blog

三、HeaderAttribute

四、HideInInspector 可讓public變量在Inspector上隱藏,沒法在Editor中進行編輯

五、MultilineAttribute 支持輸入多行文本

六、RangeAttribute 限定輸入值的範圍

七、RequireComponent 組件依賴,使用該組件後自動添加依賴組件

八、RuntimeInitializeOnLoadMethodAttribute

九、SerializeField 強制對變量進行序列化,即便變量是private

十、SpaceAttribute 增長空位

十一、TooltipAttribute 提示信息,當鼠標移到Inspector上時顯示相應的提示

十二、InitializeOnLoadAttribute

1三、InitializeOnLoadMethodAttribute

1四、MenuItem 導航欄的菜單項

 

更多屬性及詳情介紹,能夠參考:Unity教程之-Unity Attribute的使用總結

相關文章
相關標籤/搜索