2016年8月16日 星期二

【Unity官方教學分享】範圍和權限修飾詞

網頁連結

在程式碼中宣告變數的位置,會決定該變數可以被使用的範圍,以下面的程式碼為例。
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
如上圖看到的,這裡透過GetVariable存取變數,可以存取到帶有public修飾詞的變數alpha,但無法存取帶有private的beta和gama。

另外在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中修改的數值。

 以上是範圍和權限修飾詞的說明。
這次就到這裡。


沒有留言:

張貼留言

【自製小遊戲】水平思考猜謎(海龜湯)

遊戲連結 海龜湯的玩法是由出題者提出一個難以理解的事件,參與猜題者可以提出任何問題以試圖縮小範圍並找出事件背後真正的原因。但出題者僅能以「是」、「不是」或「沒有關係」來回答問題。 本遊戲蒐集各種論壇、平台的42個題目,提供給想玩海龜湯卻愁找不到題目的你們。 ...