using UnityEngine; using System.Collections; public class ScriptTest : MonoBehaviour { int myInt, newInt; float myFloat = 5.0f; }首先看到 int myInt, newInt; 那一行。
(1) int代表此變數的型別,意思是接下來宣告的變數將會是整數(Integer)。
(2) myInt是此變數的名稱,用來辨認此變數的名稱。
(3) 如果要同時宣告多個相同型別的變數,用逗點 , 將各個變數隔開,如myInt, newInt。
(4) 最後以分號 ; 做結尾,名為myInt及newInt的變數就宣告完成。
接著看到下一行的 float myFloat = 5.0f; ,如果依上述的規則,就是一個名為myFloat的浮點數(float),但多了= 5.0f是?
(5) = 5.0f 表示在宣告myFloat的同時,給它一個5.0的浮點數數值,後續如果呼叫myFloat時,它就會是5.0,以下面程式碼為例。
using UnityEngine;
using System.Collections;
public class ScriptTest : MonoBehaviour {
float myFloat = 5.0f;
void Start() {
Debug.Log(myFloat);
}
}
Start函式會在遊戲專案運行最初,執行一次函式裡的內容,這裡為 Debug.Log(myFloat); ,會在Console視窗顯示myFloat的數值,結果如下。
可以從上圖看到,Console視窗在執行後,印出了myFloat的數值5,這裡我們針對程式碼再做一些變化。
using UnityEngine;
using System.Collections;
public class ScriptTest : MonoBehaviour {
float myFloat = 5.0f;
void Start() {
myFloat = 55.0f;
Debug.Log(myFloat * 2);
}
}
印出myFloat之前,把myFloat數值改為55.0,接著在印出myFloat時,將myFloat乘2的數值顯示,可以推測數值為55.0 * 2 = 110.0,實際結果如下。可以看到結果與推測的數值相同,代表變數的數值除了在宣告時,也可以在其他執行階段帶入。
另外在顯示數值的地方,下列兩個情況想拿出來提一下。
myFloat = 55.0f;
Debug.Log(myFloat * 2);
與
myFloat = 55.0f * 2;
Debug.Log(myFloat);
當然兩個顯示結果都是110,但第一個是在Debug.Log中,把myFloat數值乘上2的結果顯示出來,數值並沒有任何的更動,所以myFloat的數值還是55.0。
而第二種情況是將55.0f * 2的數值帶入myFloat中,myFloat的數值就是110.0。
接下來是函式的說明,當開發者想針對某個功能做更複雜的撰寫時,會需要使用函式,首先來看以下的程式碼。
using UnityEngine;
using System.Collections;
public class ScriptTest : MonoBehaviour {
int myInt = 5;
void Start() {
Debug.Log(myInt);
}
int MultiplyByTwo(int number) {
return number * 2;
}
}
這裡我們可以看到兩個函式,名稱為Start的Unity預設函式,以及MultiplyByTwo函式。(1) 宣告時與變數相同,需要一個型別,以上面為例,就是函式名稱前面的void及int。
(2) 接下來是函式名稱,Start及MultiplyByTwo就是函式名稱。
(3) 在括號()中的是參數列,括號內如同變數宣告是型別加上名稱 ,可宣告一個變數,像MultiplyByTwo中的number,或宣告多個變數以逗號 , 隔開,也可以像Start一樣不宣告任何參數,要注意的是,宣告的參數只能在該函數中使用。
(4) 函式的程式碼撰寫在 { 與 } 之間,例如Start中的Debug.Log(myInt);,MultiplyByTwo中的return number * 2;
(5) 最後在函式在執行結束時,需要回傳(return)一個與型別相同的數值,舉例來說,MultiplyByTwo是以int宣告的函式,所以函式需要回傳一個整數,這裡我們將number乘2的結果回傳,也就是return number * 2;,回傳的結果會在下面的內容提到。
當我們撰寫好一個函式時,需要呼叫函式才可以運作,以下面程式為例。
using UnityEngine;
using System.Collections;
public class ScriptTest : MonoBehaviour {
int myInt = 5;
void Start() {
MultiplyByTwo(myInt);////(1)
////(4)do something...
}
int MultiplyByTwo(int number) {////(2)
return number * 2;////(3)
}
}
(1)在這裡呼叫MultiplyByTwo,代表程式碼會跳到int MultiplyByTwo(int number)執行。因為MultiplyByTwo有number這個參數,在呼叫時要再給它一個整數,這裡傳入myInt。
(2)在被呼叫時傳入了myInt,所以number數值為myInt的數值。
(3)到這裡將number * 2的數值return,MultiplyByTwo函式就執行結束。
(4)函式執行結束後,會回到呼叫它的地方再繼續執行程式碼,而呼叫函式的MultiplyByTwo(myInt);這行程式會得到return的數值,舉例來說。
using UnityEngine;
using System.Collections;
public class ScriptTest : MonoBehaviour {
int myInt = 5;
void Start() {
Debug.Log(MultiplyByTwo(myInt));
}
int MultiplyByTwo(int number) {
return number * 2;
}
}
將MultiplyByTwo(myInt)印出來得到以下結果。
可以看到印出了回傳值return number * 2;,也就是10。
另外也可以做為數值帶入變數中,例如說。
using UnityEngine;
using System.Collections;
public class ScriptTest : MonoBehaviour {
int myInt = 5;
void Start() {
myInt = MultiplyByTwo(myInt);
Debug.Log(myInt);
}
int MultiplyByTwo(int number) {
return number * 2;
}
}
將myInt印出,結果如下。最後要提的一點是,傳入的數值在函式中,不論做了任何運算,原本的數值不會被修改,例如說。
using UnityEngine;
using System.Collections;
public class ScriptTest : MonoBehaviour {
int myInt = 5;
void Start() {
MultiplyByTwo(myInt);
Debug.Log(myInt);
}
int MultiplyByTwo(int number) {
return number * 2;
}
}
這裡我們呼叫了MultiplyByTwo(myInt);,並在下一行印出myInt,結果如下。出現了傳入前的數值5,這就是數值沒有被更動的結果。
以上是變數與函式的說明,意外的比想像中還長啊。
這次就到這裡。
沒有留言:
張貼留言