仍然需要花點時間思考遊戲物件、script、變數之間的關係,
才能存取到你要的變數。
目標
我需要對一個全域變數myClickNumber,
讓不同遊戲物件裏頭的script可以隨意對他做運算與存取。
步驟
1. 首先,在Unity中,script無法獨立存在,script是component,必須依賴在GameObject底下。

2. 在script裡面,變數宣告時以public宣告,該變數就會成為全域變數。

3. 另一個script執行時,要如何使用bt_right.cs的myClickNumber變數呢?
由於script無法獨立存在,所以先把另一個script (bt_left) 新增給另一個GameObejct (buttonLeft)

4. 因為等等另一個script (bt_left) 要取用buttonRight這個GameObject裏頭的script,
所以設定一個全域GameObject myA去接buttonRight。

5. 在bt_left.cs 的script裏頭,撰寫程式碼
myA.GetComponent<bt_right>().myClickNumber
這段程式碼就可以對myClickNumber做存取運算

6. 執行程式時,可以一邊看myClickNumber有沒有隨之變化。
附註:
1. GameObject與component之間的關係屬階層關係,
GameObject可以有好幾個component,
script是一類的component,
所以GameObject可以有好幾個script。
2. 這段說明是關鍵,多讀幾次就可以懂了。
[A程式碼"code_a.cs"]
public bool a;
[B程式碼"code_b.cs"]
public GameObject A; //連結A物件
...
A.GetComponent<code_a>().a = true;
參考資源 [連結]
沒有留言:
張貼留言