在程式碼中宣告變數的位置,會決定該變數可以被使用的範圍,以下面的程式碼為例。
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中修改的數值。
以上是範圍和權限修飾詞的說明。
這次就到這裡。




沒有留言:
張貼留言