【Unity】6.1 Unity中的C#腳本基礎知識

分類:Unity、C#、VS2015 數組

建立日期:2016-04-16 函數

1、簡介

一、經常使用的C#數據類型 調試

這裏簡單介紹用Unity開發遊戲時,最經常使用的一些數據類型。 對象

(1)基本類型 blog

int、float、string、bool 繼承

(2)數組 遊戲

public string[ ] familyMembers = new string[ ]{"Greg", "Kate", "Adam", 事件

"Mia"} ; 開發

public GameObject[ ] carsInTheScene = GameObject.FindGameObjectsWithTag("car"); get

(3)List泛型列表

public List<string> list=new List<string>();

……

list.Add("a1");

二、其餘數據類型說明

(1)ArrayList

優勢是可存儲任意類型的數據列表,缺點是其效率沒有List泛型列表效率高。

public ArrayList arraylist=new ArrayList();

……

arrayList.Add(10);

arrayList.Add("abc");

(2)Hashtable

注意:即便將其聲明爲public,在Unity的檢視器中也不可見。因此若是使用它,通常將其聲明爲private,供腳本內部使用。

private Hashtable h=new Hashtable();

……

h.Add("playerName","aa");

h.Add("gender","male");

h.Add("age",20);

三、變量聲明時注意的問題

(1)聲明爲public的變量才能在檢視器(Inspector)中可見。

(2)聲明爲public的變量會在檢視器(Inspector)中自動變爲屬性名。

(3)避免使用含義不明確的變量名。例如:name、speed、score最好改成用playerName,carSpeed,opponentScore來代替,由於name看不出是誰的名字,玩家的?敵人的?若是是多個玩家、多個敵人更不明白是誰的名字了。

2、初學者容易犯迷糊的問題

一、應該將腳本文件添加到哪

可將腳本文件添加到任何遊戲對象(GameObject)中。

GameObject是其餘遊戲對象的基類(GameObject繼承自Object類)。換言之,Unity中除了Object之外的全部其餘組件,都是從GameObject繼承的。

二、腳本執行的順序

Start():開始運行遊戲時調用一次,此時尚未調用Update()。

Update():每一幀都會調用一次,通常利用它更新場景參數。

LateUpdate():每一幀調用Update()後都會調用一次,通常利用它更新相機參數。

FixedUpdate():每通過一個固定的物理時間間隔都會調用一次,通常利用它更新成績、能量等參數。

Awake():開始運行遊戲時,在Start()以前調用一次。通常利用它初始化參數。

三、怎麼知道會自動調用哪些方法

在VS2015的腳本編輯狀態下,鼠標右擊選擇【Implement MonoBehabious】:

image

而後在彈出的窗口中勾選要添加的方法(這些都是Unity自動調用的方法):

image

也能夠一次選擇多個方法,選擇後單擊【OK】,VS2015就會自動生成相關的代碼。

四、哪一種寫法好

下面舉例解釋,雖然例子簡單到沒有任何意義,可是能讓你很快明白,特別是獲取組件時更是如此。

功能需求:定義並修改某個值(初始化),修改之後,後面一直都使用這個值。

笨的寫法(效率很是低):

public void Update()

{

int age = 25;

}

「笨」的緣由:這樣每一幀都會執行一次定義並賦值,致使效率很低。

應該是(只執行1次):

private int age;

public void Start()

{

age = 25;

}

3、MonoBehaviour類

MonoBehaviour是Unity中一個很是重要的類,它定義了基本的腳本行爲,全部的腳本類均須要從它直接或間接地繼承,腳本必然事件就是從MonoBehaviour繼承而來。

在VS2015中鼠標右擊MonoBehaviour類,而後選擇【轉到定義】可觀察該類的細節。

一、針對特定事件的響應函數

除了必然事件之外,MonoBehaviour還定義了對各類特定事件(例如鼠標在模型上單擊,模型碰撞等)的響應函數,這些函數名稱均以On做爲開頭。

下面是經常使用的針對特定事件的響應函數:

image

二、經過變量訪問組件

編寫腳本的目的是用來定義遊戲對象(GameObject)的行爲,所以會常常須要訪問繼承自遊戲對象(GameObject)的各類組件並設置組件參數。對於系統內置的經常使用組件,Unity提供了很是便利的訪問方式,只須要在腳本里直接訪問組件對應的成員變量便可,這些成員變量定義在MonoBehaviur中並被腳本繼承了下來。

下面是經常使用的組件及其對應的變量:

image

注意:若是對象不存在對應的組件,則該組件對應的變量值爲null。

4、利用調試模式尋找合適的初始值

在調試模式下(即:按播放按鈕)運行時,可直接在檢視器(Inspector)中修改屬性的值,調試結束後(即:再次按播放按鈕)這些屬性的值會自動還原爲原來的值。

經過這種方式,沒必要每次都編譯運行,就能夠方便地給腳本中的變量找到合適的初始值。找到後結束調試,而後再修改腳本中變量的初始值就好了。

相關文章
相關標籤/搜索