在程式碼中宣告變數的位置,會決定該變數可以被使用的範圍,以下面的程式碼為例。
using UnityEngine; using System.Collections; public class ScopeAndAccessModifiers : MonoBehaviour { ////(1) public int alpha;////(3) private int beta = 0;////(4) private int gama = 5; void Example(int pens, int crayons)////(2) { int answer; answer = pens * crayons * alpha; Debug.Log(answer); } void Start(){} void Update () { Debug.Log("Alpha is set to:" + alpha); } //// }(1)這是一個名為ScopeAndAccessModifiers的類別, 在括號中所有內容都為該類別的區域(local)變數或函式。
(2)在Example函式中宣告的變數;pens、crayons、answer,則是Example函式的區域變數,無法在該函式以外的地方存取這些變數。
接下來是變數存取權限的修飾詞,public和private。
(3)有著public修飾詞的變數,可以在該類別以外的程式碼存取。
(4)而有private修飾詞的變數,則無法在該類別以外的程式碼存取,C#的變數在沒有修飾詞時預設為private。
另外在Unity中,帶有public的變數還有以下的特性。
可以在檢視中看到public變數的數值,也可以修改變數的初始數值。
不過要注意的是,public變數會以檢視修改的數值為準。如上圖所看到的,即使在程式碼中將alpha變數設為5,執行後顯示的數值還是檢視中設定的25。
這時若要在程式碼中初始化alpha數值,就必須在Start或Awake中做修改,例如。
using UnityEngine; using System.Collections; public class ScopeAndAccessModifiers : MonoBehaviour { public int alpha; private int beta = 0; private int gama = 5; void Start() { alpha = 50; } void Update () { Debug.Log("Alpha is set to:" + alpha); } }
在Start中將alpha修改為50,這時就會是Start中修改的數值。
以上是範圍和權限修飾詞的說明。
這次就到這裡。
沒有留言:
張貼留言