現在的Unity插件五花八門,現在自己寫出一個簡單的遊戲甚至不用自己寫腳本,利用Asset Store商店的插件即可完成,但還是會有需要自己寫腳本的時候,本章節將會介紹Unity所使用的C#語法。
在Project點擊右鍵新增Create→C# Script並取名
如果Project的C# Script有改名,必須把腳本打開把名稱改為一樣的不然會出Bug。
新增好後滑鼠左鍵點擊Script兩下開啟Script。
Unity常用的C#語言介紹
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ScriptA : MonoBehaviour
{
//這邊通常是寫要放入此腳本的物件或UI、腳本......等
[Header("這是註解的其中一種,增加腳本可讀性")]
public GameObject TestOBJ02;
[Space(20)]
[Header(" [Space(要間隔多遠的數字)]是用來增加間距的")]
public GameObject TestOBJ03;
[Header("public公開變數,GameObject可以放入Prefab物件或Hierarchy的物件")]
public GameObject TestOBJ01;
//沒有加public只能在腳本內使用,元件列會看不到
GameObject TestOBJ001;
[Header("在物件後面加上中括弧會變為陣列")]
public GameObject[] TestOBJS;
[Header("在後面加上=new GameObject[數字]陣列會變為[]的值")]
public GameObject[] TestObjects=new GameObject[5];
[Header("Int為整數,不能有小點數")]
public int TestInt;
[Header("float為浮點數,可以有小點數,需在數字後面加上f\n例如3.25f")]
public float TestFloat;
[Header("string為字串")]
//需在字串前後加上""
public string Teststring;
[Header("bool為布林,布林值只有true和false")]
//通常用來開啟或關閉物件
public bool Testbool;
[Header("Vector3為一組三維值(x,y,z)")]
//通常用來移動或旋轉物件
public Vector3 TestVector3;
[Header("Vector2為一組二維值(x,y)")]
//通常用來移動或旋轉物件,使用在2D遊戲
public Vector2 TestVector2;
[Header("Button為UI的按鈕")]
//開始遊戲或設定按鍵通常由Button做成
public Button TestButton;
[Header("Image為UI的畫布")]
//遊戲的背景圖通常由Image做成
public Image TestImage;
#region 這是可以縮小region到endregion間的程式,管理程式碼非常方便
#endregion
//兩條斜線為單排註解
/*
斜線星號為
多排註解
*/
/// <summary>
/// 3條斜線也是註解的一種
/// 通常會有<summary>包住
/// </summary>
////這邊通常是寫要執行的函式
// 遊戲開始時會執行此函式內的程式
void Start()
{
//執行AB()協程
StartCoroutine(AB());
}
// 每一幀執行一次,通常在一直偵測或物件一直執行動昨時使用
void Update()
{
// if 判斷式:if(要執行的事){}else{}
//要執行的事發生就會執行此段函式,沒發生就會執行else後的函示。
#region 這是範例,按下S鍵後會發生的事情
if (Input.GetKey(KeyCode.S)) {
//Debug.Log()裡的字串或值會在Console內出現
Debug.Log("按下按鍵,這個會一直觸發");
}
else {
Debug.Log("沒按或是按下其他鍵");
}
if (Input.GetKeyDown(KeyCode.S))
{
Debug.Log("按下按鍵,按下去的剎那觸發");
//執行EFGH函式
EFGH();
}
if (Input.GetKeyUp(KeyCode.S))
{
Debug.Log("GetKeyUp放開按鍵,放開按鍵時觸發");
//執行ABCD函式
ABCD();
}
#endregion
}
//public公開變數,可以給其他腳本讀取
public void ABCD()
{
//For迴圈
//int i=0;給整數i的起始值為0,i < TestOBJS.Length當i值小於TeseOBJS陣列值時,i++ i+1加到大於陣列值
//當i加到大於陣列值時,就會跳出迴圈
for (int i = 0; i < TestOBJS.Length; i++) {
Debug.Log("這是Debug.Log印的:" +i);
}
}
//private私有變數,只能在自己腳本使用
//如果前面未加Public會被默認為private歐
private void EFGH()
{
Debug.Log("執行EFGH");
}
//IEnumerator協程
//需要在其他函式添加(StartCoroutine(函式標題);)才能執行此協程
IEnumerator AB()
{
yield return 0;
}
}
寫好後將腳本按住左鍵拖曳給物體,可以看到TestOBJ001沒在上面
下一張章節會教多張圖卡辨識