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 | 導航欄的菜單項 |