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的值,在水平軸上,左方向鍵對應 -1,右方向鍵對應 1。由于目前不需要向上移動攝像機,所以 Y 軸的參數(shù)為 0。

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

鏈接腳本

腳本創(chuàng)建完成后,需要將其添加到物體上。在 Hierarchy 視圖中,單擊需要添加腳本的游戲物體 Main Camera(主攝像機),然后執(zhí)行 ComponentScriptMove 菜單命令,如下圖所示,Move 腳本就鏈接到了 Main Camera 上。

攝像機(Camera)是向玩家捕獲和顯示世界的設備。通過自定義和操縱攝像機,可以自由旋轉游戲視角。場景中攝像機的數(shù)量不受限制,它們可以以任何順序放置在屏幕上的任何地方,或者只捕獲屏幕的某些部分。攝像機參數(shù)如下圖和下表所示。

參數(shù) 描述 功能
Clear Flags 清除標識 確定屏幕哪些部分將被清除。這是為了方便使用多個攝像機捕捉不同的游戲元素。
Background 背景 在完成了視圖中的所有元素的繪制后以及沒有天空盒的情況 下,剩余屏幕的顏色。
Culling Mask 消隱遮罩 包含層或忽略層將被攝像機渲染。在檢視窗口向對象分配層。
Projection 投影 切換攝像機以模擬透視。
Perspective 透視 透視攝像機,由原點向外擴散性發(fā)射。即,距離越遠,它的視口 區(qū)域也就越大,透視視圖和人眼的視覺感受是一致的。
Orthographic 正交 正交攝像機,無論遠近,它的視口范圍永遠是固定的,相機會均 勻地渲染物體,沒有透視感。
Size 大小 當攝像機設置為正交模式時,攝影機視口的大小。
Field of view 視野 攝像機的視野,沿著本地 Y 軸測量,以度為單位。
Clipping Planes 裁剪面 攝像機從開始到結束渲染的距離。
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(右)鍵移動攝像機,轉換視角或位置。

注意事項

在 Unity 3D 中,C# 腳本的運行環(huán)境使用了 Mono 技術。

Mono 是指 Novell 公司致力于 .NET 開原的工程,利用 Mono 技術可以在 Unity 3D 腳本中使用所有 .NET 的相關類。

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

Unity 3D 中所有掛載到游戲對象上的腳本中包含的類都繼承自 MonoBehaviour 類。

MonoBehaviour 類中定義了各種回調方法,如 Start 、update 等等。

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

  1. 使用 AwakeStart 方法初始化。

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

AwakeStart 的不同之處在于:

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

  • Start 方法是在第一次調用 UpdateFixedUpdate 方法之前調用。

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

C# 腳本中類名必須和文件名相同,否則當腳本掛載到游戲對象時,控制臺會報錯。

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

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

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

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

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

以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號