腳本概覽 這是一個(gè)關(guān)于Unity內(nèi)部腳本如何工作的簡(jiǎn)單概覽。 Unity內(nèi)部的腳本,是通過(guò)附加自定義腳本對(duì)象到游戲物體組成的。在腳本對(duì)象內(nèi)部不同志的函數(shù)被特定的事件調(diào)用。最常用的列在下面: Update:這個(gè)函數(shù)在渲染一幀之前被調(diào)用,這里是大部分游戲行為代碼被執(zhí)行的地方,除了物理代碼。 FixedUpdate:這個(gè)函數(shù)在每個(gè)物理時(shí)間步被調(diào)用一次,這是處理基于物理游戲的地方。 在任何函數(shù)之外的代碼: 在任何函數(shù)之外的代碼在物體被加載的時(shí)候運(yùn)行,這個(gè)可以用來(lái)初始化腳本狀態(tài)。 注意:文檔的這個(gè)部份假設(shè)你是用Javascript,參考用C#編寫(xiě)獲取如何使用C#和Boo編寫(xiě)腳本的信息。 你也能定義事件句柄,它們的名稱都以O(shè)n開(kāi)始,(例如OnCollisionEnter),為了查看完整的預(yù)定義事件的列表,參考MonoBehaviour 文檔。 常用操作 大多數(shù)游戲物體的操作是通過(guò)游戲物體的Transform或Rigidbody來(lái)做的,在行為腳本內(nèi)部它們可以分別通過(guò)transform和rigidbody訪問(wèn),因此如果你想繞著Y軸每幀旋轉(zhuǎn)5度,你可以如下寫(xiě):
如果你想向前移動(dòng)一個(gè)物體,你應(yīng)該如下寫(xiě):
跟蹤時(shí)間 Time類包含了一個(gè)非常重要的類變量,稱為deltaTime,這個(gè)變量包含從上一次調(diào)用Update或FixedUpdate(根據(jù)你是在Update函數(shù)還是在FixedUpdate函數(shù)中)到現(xiàn)在的時(shí)間量。 所以對(duì)于上面的例子,修改它使這個(gè)物體以一個(gè)恒定的速度旋轉(zhuǎn)而不依賴于幀率:
移動(dòng)物體:
如果你加或是減一個(gè)每幀改變的值,你應(yīng)該將它與Time.deltaTime相乘。當(dāng)你乘以Time.deltaTime時(shí),你實(shí)際的表達(dá):我想以 10米/秒移動(dòng)這個(gè)物體不是10米/幀。這不僅僅是因?yàn)槟愕挠螒驅(qū)ⅹ?dú)立于幀而運(yùn)行,同時(shí)也是因?yàn)檫\(yùn)動(dòng)的單位容易理解。( 米/秒)另一個(gè)例子,如果你想隨著時(shí)間增加光照的范圍。下面的表達(dá)式,以2單位/秒改變半徑。
當(dāng)通過(guò)力處理剛體的時(shí)候,你通常不必用Time.deltaTime,因?yàn)橐嬉呀?jīng)為你考慮到了這一點(diǎn)。訪問(wèn)其他組件 組件被附加到游戲物體,附加Renderer到游戲物體使它在場(chǎng)景中渲染,附加一個(gè)Camera使它變?yōu)橄鄼C(jī)物體,所有的腳本都是組件,因?yàn)樗鼈兡鼙桓郊拥接螒蛭矬w。 最常用的組件可以作為簡(jiǎn)單成員變量訪問(wèn): Component 可如下訪問(wèn) Transform transform Rigidbody rigidbody Renderer renderer Camera camera (only on camera objects) Light light (only on light objects) Animation animation Collider collider …等等。 對(duì)于完整的預(yù)定義成員變量的列表。查看Component,Behaviour和MonnoBehaviour類文檔。如果游戲物體沒(méi)有你想取的相同類型的組件,上面的變量將被設(shè)置為null。任何附加到一個(gè)游戲物體的組件或腳本都可以通過(guò)GetComponent訪問(wèn)。
注意transfom和Transform之間大小寫(xiě)的區(qū)別,前者是變量(小寫(xiě)),后者是類或腳本名稱(大寫(xiě))。大小寫(xiě)不同使你能夠從類和腳本名中 區(qū)分變量。應(yīng)用我們所學(xué),你可以使用GetComponent找到任何附加在同一游戲物體上的腳本和組件,請(qǐng)注意要使用下面的例子能夠工作,你需要有一個(gè) 名為OtherScript的腳本,其中包含一個(gè)DoSomething函數(shù)。OtherScript腳本必須與下面的腳本附加到相同的物體上。
* 版權(quán)聲明:轉(zhuǎn)載時(shí)請(qǐng)以超鏈接形式標(biāo)明文章原始出處和作者信息 * 本文來(lái)自:Unity3D 教程手冊(cè) * 本文鏈接: http://www./1500.html腳本概覽 這是一個(gè)關(guān)于Unity內(nèi)部腳本如何工作的簡(jiǎn)單概覽。 Unity內(nèi)部的腳本,是通過(guò)附加自定義腳本對(duì)象到游戲物體組成的。在腳本對(duì)象內(nèi)部不同志的函數(shù)被特定的事件調(diào)用。最常用的列在下面: Update:這個(gè)函數(shù)在渲染一幀之前被調(diào)用,這里是大部分游戲行為代碼被執(zhí)行的地方,除了物理代碼。 FixedUpdate:這個(gè)函數(shù)在每個(gè)物理時(shí)間步被調(diào)用一次,這是處理基于物理游戲的地方。 在任何函數(shù)之外的代碼: 在任何函數(shù)之外的代碼在物體被加載的時(shí)候運(yùn)行,這個(gè)可以用來(lái)初始化腳本狀態(tài)。 注意:文檔的這個(gè)部份假設(shè)你是用Javascript,參考用C#編寫(xiě)獲取如何使用C#和Boo編寫(xiě)腳本的信息。 你也能定義事件句柄,它們的名稱都以O(shè)n開(kāi)始,(例如OnCollisionEnter),為了查看完整的預(yù)定義事件的列表,參考MonoBehaviour 文檔。 常用操作 大多數(shù)游戲物體的操作是通過(guò)游戲物體的Transform或Rigidbody來(lái)做的,在行為腳本內(nèi)部它們可以分別通過(guò)transform和rigidbody訪問(wèn),因此如果你想繞著Y軸每幀旋轉(zhuǎn)5度,你可以如下寫(xiě):
如果你想向前移動(dòng)一個(gè)物體,你應(yīng)該如下寫(xiě):
跟蹤時(shí)間 Time類包含了一個(gè)非常重要的類變量,稱為deltaTime,這個(gè)變量包含從上一次調(diào)用Update或FixedUpdate(根據(jù)你是在Update函數(shù)還是在FixedUpdate函數(shù)中)到現(xiàn)在的時(shí)間量。 所以對(duì)于上面的例子,修改它使這個(gè)物體以一個(gè)恒定的速度旋轉(zhuǎn)而不依賴于幀率:
移動(dòng)物體:
如果你加或是減一個(gè)每幀改變的值,你應(yīng)該將它與Time.deltaTime相乘。當(dāng)你乘以Time.deltaTime時(shí),你實(shí)際的表達(dá):我想以 10米/秒移動(dòng)這個(gè)物體不是10米/幀。這不僅僅是因?yàn)槟愕挠螒驅(qū)ⅹ?dú)立于幀而運(yùn)行,同時(shí)也是因?yàn)檫\(yùn)動(dòng)的單位容易理解。( 米/秒)另一個(gè)例子,如果你想隨著時(shí)間增加光照的范圍。下面的表達(dá)式,以2單位/秒改變半徑。
當(dāng)通過(guò)力處理剛體的時(shí)候,你通常不必用Time.deltaTime,因?yàn)橐嬉呀?jīng)為你考慮到了這一點(diǎn)。訪問(wèn)其他組件 組件被附加到游戲物體,附加Renderer到游戲物體使它在場(chǎng)景中渲染,附加一個(gè)Camera使它變?yōu)橄鄼C(jī)物體,所有的腳本都是組件,因?yàn)樗鼈兡鼙桓郊拥接螒蛭矬w。 最常用的組件可以作為簡(jiǎn)單成員變量訪問(wèn): Component 可如下訪問(wèn) Transform transform Rigidbody rigidbody Renderer renderer Camera camera (only on camera objects) Light light (only on light objects) Animation animation Collider collider …等等。 對(duì)于完整的預(yù)定義成員變量的列表。查看Component,Behaviour和MonnoBehaviour類文檔。如果游戲物體沒(méi)有你想取的相同類型的組件,上面的變量將被設(shè)置為null。任何附加到一個(gè)游戲物體的組件或腳本都可以通過(guò)GetComponent訪問(wèn)。
注意transfom和Transform之間大小寫(xiě)的區(qū)別,前者是變量(小寫(xiě)),后者是類或腳本名稱(大寫(xiě))。大小寫(xiě)不同使你能夠從類和腳本名中 區(qū)分變量。應(yīng)用我們所學(xué),你可以使用GetComponent找到任何附加在同一游戲物體上的腳本和組件,請(qǐng)注意要使用下面的例子能夠工作,你需要有一個(gè) 名為OtherScript的腳本,其中包含一個(gè)DoSomething函數(shù)。OtherScript腳本必須與下面的腳本附加到相同的物體上。
* 版權(quán)聲明:轉(zhuǎn)載時(shí)請(qǐng)以超鏈接形式標(biāo)明文章原始出處和作者信息 * 本文來(lái)自:Unity3D 教程手冊(cè) * 本文鏈接: http://www./1500.html |
|