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