C#開發Unity遊戲教程之Scene檢視與指令碼的使用

大學霸發表於2015-07-07

C#開發Unity遊戲教程之Scene檢視與指令碼的使用

Unity中Scene檢視的快捷操作

Scene檢視是開發者開發遊戲時,操作最頻繁的檢視。因為一旦一個遊戲物件被新增到遊戲的場景中,就需要首先使用滑鼠為這個遊戲物件設定出合適的狀態。而且開發者還需要多角度的觀察遊戲場景中的各遊戲物件。基於以上的原因,Unity提供了很多快捷操作,支援開發者對Scene檢視所做的各種操作,常見的操作方式有:

  • 直接按下鍵盤上的QWER鍵,即可選中Unity左上角,工具欄上的4個按鈕,且按鈕與按鍵一一對應,省去了開發者使用滑鼠點選的麻煩。

  • 使用滑鼠的滾輪,可以控制Scene檢視“視窗”與各遊戲物件的遠近,如圖2-14所示,且向上滾動靠近,向下滾動遠離。

C#開發Unity遊戲教程之Scene檢視與指令碼的使用

2-14  使用滑鼠的滾輪,控制Scene檢視與場景中各遊戲物件距離的遠近

  • 使用滑鼠雙擊Hierarchy檢視上的遊戲物件名,場景檢視會移動,直到對應的物件處於場景檢視的中間,如圖2-15所示。當開發者在場景中找不到對應的遊戲物件時,可以使用這種方法快速找到。

C#開發Unity遊戲教程之Scene檢視與指令碼的使用

2-15  滑鼠雙擊物件名,場景檢視速度定位到對應物件,且被顯示在場景檢視的中央

  • 在場景檢視裡,按下滑鼠中間的按鈕(或滾輪),滑鼠變成了,然後移動滑鼠,可以任意移動場景

  • 如圖2-16所示

  • 。其

  • 作用等同於工具欄上的第一個按鈕。

  • 在場景檢視裡,按下鍵盤上的Alt鍵,滑鼠就會變成,再按下滑鼠的左鍵拖動,可圍繞指定的遊戲物件移動。如圖2-17所示。               

C#開發Unity遊戲教程之Scene檢視與指令碼的使用

2-16  任意移動場景檢視中的場景              2-17  繞著場景檢視中的物件移動

  • 在場景檢視裡,按下滑鼠的右鍵,滑鼠就會變成眼睛的樣子,然後再按下鍵盤上的“WSAD”鍵,就可以模擬第一人稱在場景中向前、後、左、右移動,移動滑鼠相當於轉動人物的頭部。如圖2-18所示。

C#開發Unity遊戲教程之Scene檢視與指令碼的使用

1-18  模擬第一人稱,在場景中移動  2-19  場景檢視中的Gizmo工具 

  • 讀者一定注意到,在Scene檢視的右上角有個座標軸的模型,在Unity中它被稱為Gizmo,如圖2-19所示。使用它可以將Scene檢視,迅速切換到預定義的觀察視角,具體的操作是單擊Gizmo的軸。如圖2-20,切換了三個視角來檢視Scene檢視中的遊戲物件。 

C#開發Unity遊戲教程之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所示。

C#開發Unity遊戲教程之Scene檢視與指令碼的使用

2-21  Game檢視裡檢視,立方體先改變大小,然後一邊移動一邊旋轉的立方體

讀者一定在奇怪,為什麼指令碼可以改變立方體的狀態?實際上,它改變立方體狀態的方法與我們改變立方體狀態的方法是一樣的,沒錯!它也是透過修改立方體上Transform元件的屬性,進而達到目的的!

Unity中指令碼的構成

所有指令碼中的程式碼,實際上定義的是一個與指令碼同名的類(class)。而類裡又定義了變數(variable)和方法(methord),如圖2-22所示。

C#開發Unity遊戲教程之Scene檢視與指令碼的使用

2-22  指令碼的各組成部分

提示:指令碼程式碼中,以雙斜槓開始的程式碼行是註釋。是為了說明程式碼的作用而新增的,對指令碼本身不產生任何影響。

1.

讀者在前面已經見識過遊戲物件的元件了,那個時候作者告訴讀者,那是一類屬性的總稱。其實,元件的本質就是類!元件與類只是不同環境下,對同一東西的不同的稱呼而已。稱呼的轉換過程是這樣的:類定義在指令碼中,指令碼可以新增到遊戲物件上,最後以元件的形式成為了遊戲物件的一部分,如圖2-23所示。

C#開發Unity遊戲教程之Scene檢視與指令碼的使用

2-23  類、指令碼、元件

2.變數

指令碼中的變數,是用來儲存資料的,讀者可以把它看作是容器。其實,元件下的屬性本質上也是變數,同樣是同一事物在不同場景下的不同稱呼而已,如圖2-24所示。展開成為元件的指令碼,就可以看到其下的屬性名與變數名基本一致,因為字母的大小寫可能有所不同。


2-24  變數、屬性

變數中儲存的資料,成為了元件屬性預設設定的值。

3.方法

指令碼中的方法,用於完成特定的操作或者任務,例如,本節的示例中,讓立方體變大、移動和旋轉,就是指令碼中由方法完成的任務,如圖2-25所示。

C#開發Unity遊戲教程之Scene檢視與指令碼的使用

2-25  方法的作用

Unity中將指令碼賦予遊戲物件的方法

Unity中,將指令碼賦予遊戲物件的方法有多種,本小節介紹兩種最常見的方法,如圖2-26所示。

  • q  使用滑鼠,直接將指令碼從Project檢視拖動到,Hierarchy檢視裡指定的遊戲物件上;

  • q  先選中Hierarchy檢視裡指定的遊戲物件,Inspector檢視會顯示此遊戲物件的所有元件,使用滑鼠,將指令碼從Project檢視拖動到Inspector檢視即可;

最後透過檢視Inspector檢視裡,是否出現了與指令碼同名的元件,就可以驗證指令碼是否被成功的賦予了遊戲物件。

對於本章的遊戲示例,指令碼MyTransform被賦予了Cube物件(名為MyCube)。而在遊戲執行的過程中,Cube物件會發生狀態的改變,則是因為指令碼程式碼修改了Cube物件上Transform元件的屬性,進而實現了改變遊戲物件狀態的效果。

C#開發Unity遊戲教程之Scene檢視與指令碼的使用

2-26  將指令碼賦予遊戲物件的兩種方法

Unity中執行遊戲

Unity上方中間的部分,在工具欄的位置處有3個按鈕,如圖2-27所示,作用依次是執行遊戲、中止遊戲和單步執行遊戲。讀者可以單擊對應的按鈕,來決定執行遊戲的方式。

C#開發Unity遊戲教程之Scene檢視與指令碼的使用

2-27  控制遊戲執行的3個工具欄按鈕

小結

本章的內容可以分為三大部分。第一部分是構建遊戲場景,讀者可以從中瞭解到遊戲場景的操作,以及新增遊戲物件的方法;第二部分是改變遊戲物件的狀態,即遊戲物件的位置、朝向和大小,藉此瞭解了Transform元件;第三部分是使用指令碼,指令碼免去了讀者手動改變遊戲物件狀態的麻煩,也使得專案有了遊戲的樣子,藉此瞭解了指令碼的的各組成部分,即類、變數和方法,以及指令碼各組成部分與遊戲物件的關係。

本文選自:C#遊戲開發快速入門大學霸內部資料,轉載請註明出處,尊重技術尊重IT人!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29597077/viewspace-1725556/,如需轉載,請註明出處,否則將追究法律責任。

相關文章