C語言中文網 目錄

如何在Unity 3D中編寫腳本?

在上一節我們介紹了 Unity 3D 腳本的基本語法及注意事項,接下啦我們來講解一下如何在 Unity 3D 中編寫一個腳本。

創建腳本

首先執行 Assets→Create→C#Script 或 JavaScript 菜單命令創建一個空白腳本,將其命名為 Move,這里我們以 C# Script 為例如下圖所示。

創建腳本

在 Project 面板中雙擊 Move 打開腳本,進行腳本編寫。在 Update() 函數中插入代碼,函數內的每一幀代碼都會執行,代碼如下:
using UnityEngine;
using System.Collections;
public class Move:MonoBehaviour{
    void Update(){
        transform.Translate(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
    }
}
Input.GetAxis() 函數返回 -1~1 的值,在水平軸上,左方向鍵對應 -1,右方向鍵對應 1。由于目前不需要向上移動攝像機,所以 Y 軸的參數為 0。

執行 Edit→Project Settings→Input(輸入)菜單命令,即可修改映射到水平方向和垂直方向的名稱和快捷鍵,如下圖所示。

input命令

鏈接腳本

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

鏈接腳本

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

攝像機參數設置

參 數 含 義 功 能
Clear Flags 清除標識 確定屏幕哪些部分將被清除。這是為了方便使用多個攝像機捕 捉不同的游戲元素
Background 背景 在完成了視圖中的所有元素的繪制后以及沒有天空盒的情況 下,剩余屏幕的顏色
Culling Mask 消隱遮罩 包含層或忽略層將被攝像機渲染。在檢視窗口向對象分配層
Projection 投影 切換攝像機以模擬透視
Perspective 透視 透視攝像機,由原點向外擴散性發射。即,距離越遠,它的視口 區域也就越大,透視視圖和人眼的視覺感受是一致的
Orthographic 正交 正交攝像機,無論遠近,它的視口范圍永遠是固定的,相機會均 勻地渲染物體,沒有透視感
Size 大小 當攝像機設置為正交模式時,攝影機視口的大小
Field of view 視野 攝像機的視野,沿著本地Y軸測量,以度為單位
Clipping Planes 裁剪面 攝像機從開始到結束渲染的距離
Near 相對于攝像機,繪制將發生的最近點
Far 相對于攝像機,繪制將發生的最遠點
Viewport Rect 視口矩形 攝像機畫面顯示在屏幕上的區域
X   攝像機視圖的開始水平位置
Y   攝像機視圖的開始垂直位置
W 寬度 攝像機輸出在屏幕上的寬度
H 高度 攝像機輸出在屏幕上的高度
Depth 深度 攝像機在渲染順序上的位置。具有較低深度的攝像機將在較高 深度的攝像機之前渲染
Rendering Path 渲染路徑 定義攝像機的渲染路徑
Target Texture 目標紋理 用于將攝像機視圖輸出并渲染到屏幕,一般用于制作導航圖或 者畫中畫等效果
Occlusion Culling 遮擋剔除 指定是否剔除物體背向攝像機的部分
HDR 高動態光照渲染 啟用攝像機的高動態范圍渲染功能

運行測試

單擊播放按鈕,在 Scene 視圖中,使用鍵盤上的 W(前)、S(后)、A(左)、D(右)鍵移動攝像機,運行效果如下圖所示。

測試效果圖1
 
測試效果圖2

C#腳本編寫注意事項

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

但 Unity 3D 中 C# 的使用與傳統的 C# 有一些不同。

1) 腳本中的類都繼承自 MonoBehaviour 類

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

MonoBehaviour 類中定義了各種回調方法,例如 Start、Update 和 FixedUpdate 等。

通過在 Unity 中創建 C# 腳本,系統模板已經包含了必要的定義,如圖下圖所示。

在Unity 3D中創建C#腳本

2) 使用Awake或Start方法初始化

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

Awake 和 Start 的不同之處在于:Awake 方法是在加載場景時運行,Start 方法是在第一次調用 Update 或 FixedUpdate 方法之前調用,Awake 方法在所有 Start 方法之前運行。

3) 類名必須匹配文件名

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

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

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

5) 盡量避免使用構造函數

不要在構造函數中初始化任何變量,而應使用 Awake 或 Start 方法來實現。

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

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo