最近看一些代碼,經常需要在一個腳本中調用其他腳本中的屬性或方法,有兩種調用方法:
一種直接用ClassName.method(),
另一種用ClassName cn=(ClassName)FindObjectOfType (typeof(ClassName)); cn.method();
這兩種方法區別:
第一種要調用的方法或屬性需要聲明爲static,否則編譯不通過。這個類沒有實例化,只是放在遊戲中單獨的一塊內存中,當然Awake(), Start()等相關函數也不會自動執行。
第二種要調用的方法或屬性不能聲明爲static,否則編譯不通過。這個類被遊戲對象綁定了,已經實例化,代碼存放在被綁定的遊戲對象區域,所調用的屬性或方法跟這個對象有關。
如在遊戲中如需保存一些全局設置,要麼直接寫一個腳本,不跟任何對象綁定,將腳本中變量聲明爲非static;
或者創建一個空對象,然後綁定一個腳本,腳本中的變量聲明爲static。
不知道這兩種方法有木有區別,歡迎補充。