Unity 3D 編寫腳本

2021-06-15 14:07 更新

本節(jié)我們正式在 Unity 3D 中編寫一個簡單的腳本實例。

本節(jié)以C#Script為腳本編程語言編寫實例。

創(chuàng)建腳本

  1. 執(zhí)行 AssetsCreateC#ScriptJavaScript 菜單命令創(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。

  1. 執(zhí)行 EditProject SettingsInput(輸入)菜單命令,對映射到水平和垂直方向的名稱和快捷鍵進行修改。

鏈接腳本

腳本創(chuàng)建完成后,需要將其添加到物體上。在 Hierarchy 視圖中,單擊需要添加腳本的游戲物體 Main Camera(主攝像機),然后執(zhí)行 ComponentScriptMove 菜單命令,如下圖所示,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)類。

  1. 腳本中的類都繼承自 MonoBehaviour 類。

Unity 3D 中所有掛載到游戲?qū)ο笊系哪_本中包含的類都繼承自 MonoBehaviour 類。

MonoBehaviour 類中定義了各種回調(diào)方法,如 Start 、update 等等。

通過在 Unity 中創(chuàng)建 C# 腳本,系統(tǒng)模板已經(jīng)包含了必要的定義。

  1. 使用 AwakeStart 方法初始化。

用于初始化的 C# 腳本代碼必須置于 AwakeStart 方法中。

AwakeStart 的不同之處在于:

  • Awake 方法是在加載場景時,并且在所有 Start 方法之前運行。

  • Start 方法是在第一次調(diào)用 UpdateFixedUpdate 方法之前調(diào)用。

  1. 類名必須匹配文件名。

C# 腳本中類名必須和文件名相同,否則當腳本掛載到游戲?qū)ο髸r,控制臺會報錯。

  1. 只有滿足特定情況時變量才能顯示在屬性查看器中。

只有公有的成員變量才能顯示在屬性查看器中,而 privateprotected 類型的成員變量不能顯示,如果要使屬性項在屬性查看器中顯示,它必須是 public 類型的。

  1. 盡量避免使用構(gòu)造函數(shù)。

不要在構(gòu)造函數(shù)中初始化任何變量,而應(yīng)使用 AwakeStart 方法來實現(xiàn)。

在單一模式下使用構(gòu)造函數(shù)可能會導致嚴重后果,因為它把普通類構(gòu)造函數(shù)封裝了,主要用于初始化腳本和內(nèi)部變量值,這種初始化具有隨機性,容易引發(fā)引用異常。因此,一般情況下盡量避免使用構(gòu)造函數(shù)。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號