Unity 如何在專案讀取的時候自動執行,並且判斷某個Class是否存在

因為套件的需要,所以需要在專案載入的時候做一些程式,不難只需要如下程式,參考Unity官方網站


using UnityEditor; using UnityEngine; [InitializeOnLoad] class MyClass { static MyClass () { EditorApplication.update += Update; } static void Update () { Debug.Log("Updating"); } }

雖然他說只會執行一次,但我實驗下來,每次進入viusal studio 回到unity就會再度執行一次
網友也提出了解決辦法


  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using UnityEditor;
  4. [InitializeOnLoad]
  5. public class AutoEditorCode : ScriptableObject
  6. {
  7. static AutoEditorCode m_Instance = null;
  8. static AutoEditorCode()
  9. {
  10. EditorApplication.update += OnInit;
  11. }
  12. static void OnInit()
  13. {
  14. EditorApplication.update -= OnInit;
  15. m_Instance = FindObjectOfType<AutoEditorCode>();
  16. if (m_Instance == null)
  17. {
  18. m_Instance = CreateInstance<AutoEditorCode>();
  19. // your code here
  20. }
  21. }
  22. }
  23. #endif

這樣確保程式在專案讀取完成的時候只執行一次

因為我的專案依賴其他專案的Class,那怎麼在專案載入的時候判斷是否有Class的存在,
網友也有提出解決方法

  1. Type label = System.Type.GetType("AudioListener");
  2. if(label != null){
  3. // How do I access it's attribute?
  4. // How do I invoke function?
  5. }



最後如果該Class不存在的時候該怎麼顯示訊息, 很簡單

EditorUtility.DisplayDialog("抬頭", "內文", "OK按鈕文字");//回傳true false



好了以上
   











留言

這個網誌中的熱門文章

使用藍牙BLE 讓iphone android 連接樹莓派3 raspberry pi 3

四軸飛行器:飛控板DIY

小四軸飛行器:驅動馬達