C#開發Unity遊戲教程之Scene檢視與指令碼的使用
C#開發Unity遊戲教程之Scene檢視與指令碼的使用
Unity中Scene檢視的快捷操作
Scene檢視是開發者開發遊戲時,操作最頻繁的檢視。因為一旦一個遊戲物件被新增到遊戲的場景中,就需要首先使用滑鼠為這個遊戲物件設定出合適的狀態。而且開發者還需要多角度的觀察遊戲場景中的各遊戲物件。基於以上的原因,Unity提供了很多快捷操作,支援開發者對Scene檢視所做的各種操作,常見的操作方式有:
-
直接按下鍵盤上的Q、W、E、R鍵,即可選中Unity左上角,工具欄上的4個按鈕,且按鈕與按鍵一一對應,省去了開發者使用滑鼠點選的麻煩。
-
使用滑鼠的滾輪,可以控制Scene檢視“視窗”與各遊戲物件的遠近,如圖2-14所示,且向上滾動靠近,向下滾動遠離。
圖2-14 使用滑鼠的滾輪,控制Scene檢視與場景中各遊戲物件距離的遠近
-
使用滑鼠雙擊Hierarchy檢視上的遊戲物件名,場景檢視會移動,直到對應的物件處於場景檢視的中間,如圖2-15所示。當開發者在場景中找不到對應的遊戲物件時,可以使用這種方法快速找到。
圖2-15 滑鼠雙擊物件名,場景檢視速度定位到對應物件,且被顯示在場景檢視的中央
-
在場景檢視裡,按下滑鼠中間的按鈕(或滾輪),滑鼠變成了,然後移動滑鼠,可以任意移動場景。
-
,
-
如圖2-16所示,
-
。其
-
作用等同於工具欄上的第一個按鈕。
-
在場景檢視裡,按下鍵盤上的Alt鍵,滑鼠就會變成,再按下滑鼠的左鍵拖動,可圍繞指定的遊戲物件移動。如圖2-17所示。
圖2-16 任意移動場景檢視中的場景 圖2-17 繞著場景檢視中的物件移動
-
在場景檢視裡,按下滑鼠的右鍵,滑鼠就會變成眼睛的樣子,然後再按下鍵盤上的“W、S、A、D”鍵,就可以模擬第一人稱在場景中向前、後、左、右移動,移動滑鼠相當於轉動人物的頭部。如圖2-18所示。
圖1-18 模擬第一人稱,在場景中移動 圖2-19 場景檢視中的Gizmo工具
-
讀者一定注意到,在Scene檢視的右上角有個座標軸的模型,在Unity中它被稱為Gizmo,如圖2-19所示。使用它可以將Scene檢視,迅速切換到預定義的觀察視角,具體的操作是單擊Gizmo的軸。如圖2-20,切換了三個視角來檢視Scene檢視中的遊戲物件。
圖2-20 使用不同的視角檢視檢視中的遊戲物件
Unity中使用指令碼
使用本章前面介紹的方法,讀者可以讓遊戲場景中的遊戲物件改變位置,或者旋轉等等。但是,光是使用手動的方式,調節各遊戲的狀態,看起來不像是遊戲的風格。畢竟玩家只想控制一個遊戲物件,至於其它的遊戲物件,那是電腦需要考慮的事情!沒錯,為了讓遊戲物件自己動起來,就只好使用指令碼了。本節就先帶領讀者看看指令碼,及其作用效果,而讀者無需在意程式碼的實現細節,這會在後面的章節裡講解。
Unity中示例效果展示
下面是一個示例,它會讓場景中的立方體邊旋轉邊移動,而且在開始移動前還會改變自己的大小!是不是很神奇?下面是讓立方體旋轉、移動的指令碼的全部程式碼:
-
01 using UnityEngine;
-
02 using System.Collections;
-
03
-
04 public class MyTransform : MonoBehaviour
-
05 {
-
06 public float scaleValue = 1.5f;
-
07 public float xPosition = 0.1f;
-
08 public int yRotation = 10;
-
09 // Use this for initialization
-
10 void Start ()
-
11 {
-
12 transform.localScale = new Vector3(1,scaleValue,1);
-
13 }
-
14 // Update is called once per frame
-
15 void Update ()
-
16 {
-
17 transform.Translate ( new Vector3(xPosition,0,0),Space.World);
-
18 transform.Rotate (Vector3.up * yRotation,Space.World);
-
19 }
-
20 }
這個指令碼讓立方體產生的運動效果如圖2-21所示。
圖2-21 在Game檢視裡檢視,立方體先改變大小,然後一邊移動一邊旋轉的立方體
讀者一定在奇怪,為什麼指令碼可以改變立方體的狀態?實際上,它改變立方體狀態的方法與我們改變立方體狀態的方法是一樣的,沒錯!它也是透過修改立方體上Transform元件的屬性,進而達到目的的!
Unity中指令碼的構成
所有指令碼中的程式碼,實際上定義的是一個與指令碼同名的類(class)。而類裡又定義了變數(variable)和方法(methord),如圖2-22所示。
圖2-22 指令碼的各組成部分
提示:指令碼程式碼中,以雙斜槓開始的程式碼行是註釋。是為了說明程式碼的作用而新增的,對指令碼本身不產生任何影響。
1.類
讀者在前面已經見識過遊戲物件的元件了,那個時候作者告訴讀者,那是一類屬性的總稱。其實,元件的本質就是類!元件與類只是不同環境下,對同一東西的不同的稱呼而已。稱呼的轉換過程是這樣的:類定義在指令碼中,指令碼可以新增到遊戲物件上,最後以元件的形式成為了遊戲物件的一部分,如圖2-23所示。
圖2-23 類、指令碼、元件
2.變數
指令碼中的變數,是用來儲存資料的,讀者可以把它看作是容器。其實,元件下的屬性本質上也是變數,同樣是同一事物在不同場景下的不同稱呼而已,如圖2-24所示。展開成為元件的指令碼,就可以看到其下的屬性名與變數名基本一致,因為字母的大小寫可能有所不同。
圖2-24 變數、屬性
變數中儲存的資料,成為了元件屬性預設設定的值。
3.方法
指令碼中的方法,用於完成特定的操作或者任務,例如,本節的示例中,讓立方體變大、移動和旋轉,就是指令碼中由方法完成的任務,如圖2-25所示。
圖2-25 方法的作用
Unity中將指令碼賦予遊戲物件的方法
在Unity中,將指令碼賦予遊戲物件的方法有多種,本小節介紹兩種最常見的方法,如圖2-26所示。
-
q 使用滑鼠,直接將指令碼從Project檢視拖動到,Hierarchy檢視裡指定的遊戲物件上;
-
q 先選中Hierarchy檢視裡指定的遊戲物件,Inspector檢視會顯示此遊戲物件的所有元件,使用滑鼠,將指令碼從Project檢視拖動到Inspector檢視即可;
最後透過檢視Inspector檢視裡,是否出現了與指令碼同名的元件,就可以驗證指令碼是否被成功的賦予了遊戲物件。
對於本章的遊戲示例,指令碼MyTransform被賦予了Cube物件(名為MyCube)。而在遊戲執行的過程中,Cube物件會發生狀態的改變,則是因為指令碼程式碼修改了Cube物件上Transform元件的屬性,進而實現了改變遊戲物件狀態的效果。
圖2-26 將指令碼賦予遊戲物件的兩種方法
Unity中執行遊戲
Unity上方中間的部分,在工具欄的位置處有3個按鈕,如圖2-27所示,作用依次是執行遊戲、中止遊戲和單步執行遊戲。讀者可以單擊對應的按鈕,來決定執行遊戲的方式。
圖2-27 控制遊戲執行的3個工具欄按鈕
小結
本章的內容可以分為三大部分。第一部分是構建遊戲場景,讀者可以從中瞭解到遊戲場景的操作,以及新增遊戲物件的方法;第二部分是改變遊戲物件的狀態,即遊戲物件的位置、朝向和大小,藉此瞭解了Transform元件;第三部分是使用指令碼,指令碼免去了讀者手動改變遊戲物件狀態的麻煩,也使得專案有了遊戲的樣子,藉此瞭解了指令碼的的各組成部分,即類、變數和方法,以及指令碼各組成部分與遊戲物件的關係。
本文選自:C#遊戲開發快速入門大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1725556/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#開發Unity遊戲教程之使用指令碼變數C#Unity遊戲指令碼變數
- C#開發Unity遊戲教程之Unity中方法的引數C#Unity遊戲
- C#開發Unity遊戲教程之遊戲物件的屬性變數C#Unity遊戲物件變數
- C#開發Unity遊戲教程之判斷語句C#Unity遊戲
- C#開發Unity遊戲教程之遊戲物件的行為邏輯方法C#Unity遊戲物件
- Unity3D C#指令碼開發學習Unity3DC#指令碼
- Unity引擎與C#指令碼簡介UnityC#指令碼
- 檢視空間使用情況的指令碼指令碼
- C#開發Unity遊戲教程迴圈遍歷做出判斷及Unity遊戲示例C#Unity遊戲
- iOS開發-列表檢視的基本介紹與使用iOS
- 在C#中使用Halcon開發視覺檢測程式C#視覺
- mysql檢視使用者的許可權指令碼MySql指令碼
- 【Unity3D開發小遊戲】《戰棋小遊戲》Unity開發教程Unity3D遊戲
- 檢視ORACLE AS 埠指令碼Oracle指令碼
- rman的備份檢視的指令碼指令碼
- [Unity2D]指令碼的使用規則Unity指令碼
- C#遊戲開發快速入門教程Unity5.5教程C#遊戲開發Unity
- Unity使用VS開發編碼格式的問題Unity
- 檢視備份資訊指令碼指令碼
- 動態建立檢視指令碼指令碼
- Unity3D熱更新全書-指令碼(四) 用C#LightEvil搭建實際開發使用的指令碼框架Unity3D指令碼C#框架
- 【Unity 框架】 QFramework v1.0 使用指南 工具篇: 16. LiveCodingKit 寫程式碼不用停止執行的利器 | Unity 遊戲框架 | Unity 遊戲開發 | Unity 獨立遊戲Unity框架Framework遊戲開發
- 檢視鎖定的session資訊指令碼Session指令碼
- 【管理】Oracle 常用的V$ 檢視指令碼Oracle指令碼
- 如何使用 Shell 指令碼來檢視多個伺服器的埠是否開啟?指令碼伺服器
- Unity熱更學習--Lua指令碼使用C#中的事件、委託和協程Unity指令碼C#事件
- 使用SQL指令碼檢視錶空間使用率和使用dba_tablespace_usage_metrics檢視的區別SQL指令碼
- Oracle檢視錶空間使用率SQL指令碼OracleSQL指令碼
- 指令碼實現檢視錶空間使用情況指令碼
- 使用Notepad++開發C#,一個複雜點的csscript指令碼C#CSS指令碼
- GUI與GUILayout的區別——《Unity 3D遊戲開發》GUIUnity3D遊戲開發
- 【Unity遊戲開發】SpriteAtlas與AssetBundle最佳食用方案Unity遊戲開發
- 一個快速檢視trace的小指令碼指令碼
- 透過shell指令碼檢視procedure的資訊指令碼
- 透過shell指令碼檢視package的資訊指令碼Package
- 通過shell指令碼檢視procedure的資訊指令碼
- 通過shell指令碼檢視package的資訊指令碼Package
- Linux檢視網路流量的指令碼Linux指令碼