今天在架我自己的網站,花掉很多時間:(,所以今天就寫少一點吧,不好意思囉。
今天我們來解釋昨天用來控制方塊移動的程式碼。
using UnityEngine;
public class Move_Script : MonoBehaviour
{
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
transform.position += Vector3.left;
}
if (Input.GetKeyDown(KeyCode.RightArrow))
{
transform.position += Vector3.right;
}
}
}
Unity的語法基本上是C#,不過沒有學過的也不用太擔心,因為要使用Unity就算是已經熟悉C#的人都要學很多新東西,所以就讓我們開始吧。
首先來看第一行
using UnityEngine;
先來拆解它,using 直接翻譯過來就是使用,它的用法是using+你的命名空間,讓編譯器知道要尋找C#沒有定義的工具的時候可以來這個命名空間裡面找。
因為我們常常會用到Unity定義的像是Vector3、Input等等函式、型別,因為這些東西不是C#原本就有的,所以就要加這一行讓編譯器知道當我們使用這些東西的時候要去UnityEngine這個命名空間裡面找。如果不加也不是不行,但是就要在程式的前面加UnityEngine,像是Input.GetKeyDown就要改成UnityEngine.Input.GetKeyDown,讓編譯器知道去哪裡找。
然後是
public class Move_Script : MonoBehaviour
publuc 就是公開的意思對吧,而class是用於創建一個類別,所以合起來就是創建一個叫做Move_Script的公開類別, : 在C#裡面就是繼承的意思,而MonoBehaviour是Unity裡所有可以掛在物件上的程式的基底類別,它提供像是Start、Update函式等等功能,所以讓我們的Move_Script繼承它之後,Move_Script就可以取用這些函式,如果不讓Move_Script繼承MonoBehaviour的話,它就只是一個一般的C#程式,可以說是MonoBehaviour讓它有了一顆Unity的心。
接著看到
void Start(){
}
void Update()
{
}
Start函式裡面的程式碼會在每一次Move_Script這個程式碼被呼叫的時候執行一次,一般會拿來放初始化相關的東西,以我們這個程式來說暫時不會用到。
Update函式則是程式進行的每一幀都會執行一次,Move_Script主要的功能目前全都寫在它裡面。
再來是
if (Input.GetKeyDown(KeyCode.LeftArrow))
{
transform.position += Vector3.left;
}
if()會去判斷括號裡的條件是否成立,如果成立的話就會執行大括號裡的程式。
Input.GetKeyDown會去判斷是否有按鈕被按下,如果它又剛好是KeyCode.LeftArrow(即← 鍵)的話就會回傳true讓大括號內的程式執行。
接著看大括號裡的程式
transform就是這個物件的Transform,position、scale、rotation都算Transform,所以transform.position就是取這個物件的位置,Vector3是Unity裡定義的類別,用於存各種三維結構,像是位置就是其中一種,其中Vector3.left就是(-1,0,0),所以transform.position += Vector3.left;就是讓物件向左移動一格。
Right的部分除了把left改成right以外其他都一模一樣。