Unity的RuntimeInitializeOnLoadMethod屬性初探


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

 

先來看一下它的生命周期

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

輸出結果

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

}

輸出結果

image

 

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

 

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

 

 

Unity中提供的Attribute有很多,RuntimeInitializeOnLoadMethodAttribute只是其中的一種。如果自己寫程序擴展編輯器的功能,就需要了解這些屬性。常用的有:

1、AddComponentMenu 導航欄菜單

2、ContextMenu 右鍵菜單

3、HeaderAttribute

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

5、MultilineAttribute 支持輸入多行文本

6、RangeAttribute 限定輸入值的范圍

7、RequireComponent 組件依賴,使用該組件后自動添加依賴組件

8、RuntimeInitializeOnLoadMethodAttribute

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

10、SpaceAttribute 增加空位

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

12、InitializeOnLoadAttribute

13、InitializeOnLoadMethodAttribute

14、MenuItem 導航欄的菜單項

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM