前言
思考Unity C# 這一個系列的定位,我認為決定學習「製作遊戲」的「程式設計C#」的你跟我,應該都對於Unity有一定了解,我不打算撰寫「如何操作Unity」(如果有需要,可以讓我知道)。
如果不是基本操作,我依然會在這個系列特別說明,像是父子物件介紹及程式,主要範疇依然在程式中,如果未來有機會,我會再考慮撰寫「Unity Art」用來介紹Unity簡單的動畫和美術使用、「Unity Effect」程式特效。
我在撰寫這系列的文章,我是處於理解宣告變數懂得會使用,並且懂得思考如何解決問題,在這段時間內我幾乎都是從Unity官方和英文教學去了解,破英文也漸漸能讀懂不少文章(笑)。
除錯工具:Debug.Log();
這是一個相當重要的程式碼,並不是C#的Console類型,是Unity提供除錯程序中負責提供訊息的函式,雖然也可以用「Print();」,不過我看過所有的教學都是使用Debug.Log。
//Unity.Engine內
//class Debug內
public static void Log(object message);
public static void Log(object message, Object context);
//訊息會呈現在Console中。
目前為止,我們幾乎都使用第一個,在Untiy官方的文件中有提到會跟Hierarchy中做連結,當點擊這則訊息會在Hierarchy中高亮呈現Debug的物件。
寫程式就像是用電話指揮別人,「請工人007拿著黃磚頭到17號工地」然而你根本看不到黃磚頭有沒有到17號工地,工人是不是007,你並不是永遠確定你的指揮沒問題,你的理解完全正確。
我在寫程式時,會在撰寫的初段瘋狂使用這段函式,譬如我今天要設計一段隨機方向的二維向量,我會撰寫玩隨機方向後測試一次,計時器製作完成再測試好幾次。
接下來簡單舉例Debug.Log的不同用途。
//協助呈現事件觸發,放在Update。
Debug.Log("按下滑鼠左鍵");
//用在持續改變的變數上,放在Update,像是計時器有沒有正確運作。
Debug.Log(timer);
//用來確認事件觸發,放在事件。
Debug.Log(某個布林);
測試:實值與參考
在前一篇文章有提到,C#有分成兩種不同的儲存空間,並且分別放置兩種不同的類型,文章如下,接下來會做簡單的測試。
實值類型(Value Type)的運作方式:
int a = 7;
int b = a;
b = 5;
Debug.Log(a);
Console會呈現:7,每一個變數都有一個值去對應。
參考類型(Reference Type)的運作方式:
01.先創造一個參考類型
public class myclass
{
public int value;
public myclass(int value)
{
this.value = value;
}
}
//創建一個Class,呼叫myclass時的值,會寫入myclass本身攜帶的value。
02.用實質類型的方式去測試參考類型
myclass first = new myclass(7);
myclass second = first;
second.value = 5;
Debug.Log(first.value);
Console會呈現:5,Class frist的值被Second替代了。
結論
- 實值類型的每一個變數都有一個對應的值,參考類型會偏向一個公用的資料夾
- 實值類型像是每個同學的名子,小明的名子和小美的名子都有對應的值。
- 參考類型則是班上的物品,小明的班級和小美的班級只有一個黑板。
結尾
這篇文章意外的耗時間,如何用更淺顯易懂的說明來解釋這兩種不同的類型,並且呈現這兩種類型的實際變化是一個問題,不過寫著寫著就完成了。