W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本節(jié)我們正式在 Unity 3D 中編寫一個(gè)簡(jiǎn)單的腳本實(shí)例。
本節(jié)以C#Script
為腳本編程語言編寫實(shí)例。
創(chuàng)建腳本
Assets
→ Create
→ C#Script
或 JavaScript
菜單命令創(chuàng)建一個(gè)空白腳本,將其命名為 Move。
在 Project 面板中雙擊 Move 打開腳本進(jìn)行編寫。在 Upadate()
函數(shù)中寫入代碼。
using UnityEngine;
using System.Collections;
public class Move:MonoBehaviour{
void Update(){
transform.Translate(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
}
}
Input.GetAxis()
函數(shù)返回-1~1
的值,在水平軸上,左方向鍵對(duì)應(yīng) -1
,右方向鍵對(duì)應(yīng) 1
。由于目前不需要向上移動(dòng)攝像機(jī),所以 Y 軸的參數(shù)為 0
。
Edit
→ Project Settings
→ Input
(輸入)菜單命令,對(duì)映射到水平和垂直方向的名稱和快捷鍵進(jìn)行修改。
鏈接腳本
腳本創(chuàng)建完成后,需要將其添加到物體上。在 Hierarchy 視圖中,單擊需要添加腳本的游戲物體 Main Camera
(主攝像機(jī)),然后執(zhí)行 Component
→ Script
→ Move
菜單命令,如下圖所示,Move
腳本就鏈接到了 Main Camera
上。
攝像機(jī)(Camera
)是向玩家捕獲和顯示世界的設(shè)備。通過自定義和操縱攝像機(jī),可以自由旋轉(zhuǎn)游戲視角。場(chǎng)景中攝像機(jī)的數(shù)量不受限制,它們可以以任何順序放置在屏幕上的任何地方,或者只捕獲屏幕的某些部分。攝像機(jī)參數(shù)如下圖和下表所示。
參數(shù) | 描述 | 功能 |
---|---|---|
Clear Flags |
清除標(biāo)識(shí) | 確定屏幕哪些部分將被清除。這是為了方便使用多個(gè)攝像機(jī)捕捉不同的游戲元素。 |
Background |
背景 | 在完成了視圖中的所有元素的繪制后以及沒有天空盒的情況 下,剩余屏幕的顏色。 |
Culling Mask |
消隱遮罩 | 包含層或忽略層將被攝像機(jī)渲染。在檢視窗口向?qū)ο蠓峙鋵印?/td> |
Projection |
投影 | 切換攝像機(jī)以模擬透視。 |
Perspective |
透視 | 透視攝像機(jī),由原點(diǎn)向外擴(kuò)散性發(fā)射。即,距離越遠(yuǎn),它的視口 區(qū)域也就越大,透視視圖和人眼的視覺感受是一致的。 |
Orthographic |
正交 | 正交攝像機(jī),無論遠(yuǎn)近,它的視口范圍永遠(yuǎn)是固定的,相機(jī)會(huì)均 勻地渲染物體,沒有透視感。 |
Size |
大小 | 當(dāng)攝像機(jī)設(shè)置為正交模式時(shí),攝影機(jī)視口的大小。 |
Field of view |
視野 | 攝像機(jī)的視野,沿著本地 Y 軸測(cè)量,以度為單位。 |
Clipping Planes |
裁剪面 | 攝像機(jī)從開始到結(jié)束渲染的距離。 |
Near |
近 | 相對(duì)于攝像機(jī),繪制將發(fā)生的最近點(diǎn)。 |
Far |
遠(yuǎn) | 相對(duì)于攝像機(jī),繪制將發(fā)生的最遠(yuǎn)點(diǎn)。 |
Viewport Rect |
視口矩形 | 攝像機(jī)畫面顯示在屏幕上的區(qū)域。 |
X |
攝像機(jī)視圖的開始水平位置。 | |
Y |
攝像機(jī)視圖的開始垂直位置。 | |
W |
寬度 | 攝像機(jī)輸出在屏幕上的寬度。 |
H |
高度 | 攝像機(jī)輸出在屏幕上的高度。 |
Depth |
深度 | 攝像機(jī)在渲染順序上的位置。具有較低深度的攝像機(jī)將在較高 深度的攝像機(jī)之前渲染。 |
Rendering Path |
渲染路徑 | 定義攝像機(jī)的渲染路徑。 |
Target Texture |
目標(biāo)紋理 | 用于將攝像機(jī)視圖輸出并渲染到屏幕,一般用于制作導(dǎo)航圖或 者畫中畫等效果。 |
Occlusion Culling |
遮擋剔除 | 指定是否剔除物體背向攝像機(jī)的部分。 |
HDR |
高動(dòng)態(tài)光照渲染 | 啟用攝像機(jī)的高動(dòng)態(tài)范圍渲染功能。 |
運(yùn)行測(cè)試
單擊播放按鈕,在 Scene 視圖中,使用鍵盤上的 W(前)、S(后)、A(左)、D(右)鍵移動(dòng)攝像機(jī),轉(zhuǎn)換視角或位置。
注意事項(xiàng)
在 Unity 3D 中,C# 腳本的運(yùn)行環(huán)境使用了 Mono 技術(shù)。
Mono 是指 Novell 公司致力于 .NET 開原的工程,利用 Mono 技術(shù)可以在 Unity 3D 腳本中使用所有 .NET 的相關(guān)類。
Unity 3D 中所有掛載到游戲?qū)ο笊系哪_本中包含的類都繼承自 MonoBehaviour 類。
MonoBehaviour 類中定義了各種回調(diào)方法,如 Start
、update
等等。
通過在 Unity 中創(chuàng)建 C# 腳本,系統(tǒng)模板已經(jīng)包含了必要的定義。
Awake
或 Start
方法初始化。
用于初始化的 C# 腳本代碼必須置于 Awake
或 Start
方法中。
Awake
和 Start
的不同之處在于:
Awake
方法是在加載場(chǎng)景時(shí),并且在所有 Start
方法之前運(yùn)行。Start
方法是在第一次調(diào)用 Update
或 FixedUpdate
方法之前調(diào)用。C# 腳本中類名必須和文件名相同,否則當(dāng)腳本掛載到游戲?qū)ο髸r(shí),控制臺(tái)會(huì)報(bào)錯(cuò)。
只有公有的成員變量才能顯示在屬性查看器中,而 private
和 protected
類型的成員變量不能顯示,如果要使屬性項(xiàng)在屬性查看器中顯示,它必須是 public
類型的。
不要在構(gòu)造函數(shù)中初始化任何變量,而應(yīng)使用 Awake
或 Start
方法來實(shí)現(xiàn)。
在單一模式下使用構(gòu)造函數(shù)可能會(huì)導(dǎo)致嚴(yán)重后果,因?yàn)樗哑胀悩?gòu)造函數(shù)封裝了,主要用于初始化腳本和內(nèi)部變量值,這種初始化具有隨機(jī)性,容易引發(fā)引用異常。因此,一般情況下盡量避免使用構(gòu)造函數(shù)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: