跳到主要內容

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

        Raspberry PI 3 終於內建藍牙與網路晶片 這個晶片有點強大,可以 同時 讓Wifi 與 BLE 和 SPP (RF Com) 同時繁忙通訊都沒有問題。        Raspberry PI 如果是當成藍牙Client 連結身邊的BLE裝置,例如ibeancon、智慧手環、智慧手錶,那只要使用簡單hcitool搭配hciconfig 指令就可以達到將資料要回來,在網路關鍵字一下就可以找到如何使用hcitool 連線並要得資料。      手機要與 Raspberry PI連線的方法可以透過,wifi 或是藍牙,但是操作上使用藍牙比較直覺與簡易。但是要讓手機連線 Raspberry PI, Raspberry PI上就需要將藍牙裝置當成Server,這件事情就需要一些程式碼上的撰寫。     現在的文件說到關於如何將 Raspberry PI藍牙裝置當成Server的文章並不太多,開發上總感覺困難重重,我也是在這裡停滯了好多天,不斷的搜尋解決方法,因為通起來了,資料來自網路所以也回饋給網路,讓下一個使用者減少這類問題的負擔。 不過目前這個方法未來開發資源越來越齊備可能不敷使用,但至少現在是可用的備案。     網路上搜尋之後,整體套件如下 藍牙硬體<== BlueZ <== Nodejs(Bleno) <== Node Ble <==  Node  Socket  <==你的程式 我們發現藍牙要動起來通常會倚賴BlueZ的套件,好在的是最新的版作業系統已經將BlueZ提升到5.23,支援BLE了。 所以安裝BlueZ套件這件事情就可以省略。        接著安裝 Node 環境 , http://blog.itist.tw/2016/04/using-raspberry-pi-3-to-build-eddystone-beacons-with-raspbian-jessie.html 於這篇網址提到安裝Node的快速方法,如果隨著時間推移太舊或是失效,在搜尋一下如何安裝Node即可解決。 題外話:Linux上開發要有所體悟,所有的架構都是在變動的,隨著版本的變動舊的API可能就會改變或是失效,期待不變與或是統一開發方式都是不太切合

nvidia jetson nano 開啟VNC步驟

sudo apt-get update sudo apt-get install nano sudo nano /usr/share/glib-2.0/schemas/org.gnome.Vino.gschema.xml Add this key:     <key name='enabled' type='b'>       <summary>Enable remote access to the desktop</summary>       <description>         If true, allows remote access to the desktop via the RFB         protocol. Users on remote machines may then connect to the         desktop using a VNC viewer.       </description>       <default>false</default>     </key> sudo glib-compile-schemas /usr/share/glib-2.0/schemas gsettings set org.gnome.Vino enabled true gsettings set org.gnome.Vino prompt-enabled false gsettings set org.gnome.Vino require-encryption false # Reboot the system so that the settings take effect sudo reboot /usr/lib/vino/vino-server

小四軸飛行器:驅動馬達

等待陀螺儀 的這段時間馬達先來了,所以我們開始測試馬達驅動系統飛行器的馬達是透過 Arduino 發出 PWM 訊號,傳送給驅動器 ( 小型為 MOS FET ,大型為電調 ) 控制馬達的轉速,達到控制飛行器。為了測試我們的驅動電路,我們先寫一個簡單的 PWM 控制,讓 PWM 輸出值越來越大,到大極限的時候,又慢慢地變小,如果我們的驅動電路可以正常運作時我們應該可以聽到馬達的聲音漸漸地變大,然後漸漸地變小。 測試馬達之前我們先學習 Arduino 的 PWM ,學習的過程當中我參考了下面的網站 http://coopermaa2nd.blogspot.tw/2011/07/6-pwm.html http://coopermaa2nd.blogspot.tw/2011/07/61-pwm-modes-part1.html 感謝 Cooper Maa 。       一開始我們先使用一個 LED 正腳接再 PWM Nano 的 D3 ,然後負腳接到 GND ,接著寫讓 PWM 變大變小的程式 然後又找到如下網站 葉難 :Arduino 練習 : 呼吸燈 http://yehnan.blogspot.tw/2012/02/arduino_16.html 使用網站上的程式碼,我們可以看到燈慢慢亮起來,又慢慢的暗下去, 如果看到這樣的結果代表我們的 PWM 範例程是可以動作。 當呼吸燈完成了,代表我們的程式碼是沒有問題的 ( 如果有問題就是電路的問題 ) ,接下來只要把 LED 腳換成馬達控制腳,就可以測試我們的驅動。 查詢了一下 SI2302 ,由下表可以知道為什麼選用這個 IC ,這張表是在某個賣場抓到的 http://taiwan.tmall.com/item/20689248199.htm? 型號 電流 電壓 標示 極性 封裝 2SK3018 100MA 30V KN N 通道 SOT23 2N70