[ Unity 2D ] 教學 #01 – 物件建立與Hello World!

標籤: , ,

上一篇文章中提到安裝與版面配置,這一篇文章中我們來撰寫第一行程式碼

目前我們的畫面應該是長這樣的

Hierarchy中有一個Main Camera 在上一篇文章中我們有提到他叫做主要攝影機,不過現在還不需要理他。

點擊Main Camera 就會出現他的屬性視窗,這主要攝影機的作用在於顯示遊戲畫面,遊戲的畫面就是攝影機所看見的範圍,在往後的章節我們會再介紹Main Camera,在此就先無視他了。

接下來把視線聚焦在左上方的選單中,從左而右分別是:

  • File – 檔案
  • Edit – 編輯
  • Assets – 資產
  • GameObject – 遊戲物件
  • Component – 組件
  • Window – 視窗
  • Help – 幫助

點擊GameObject會出現以下選單 分別是

  • Create Empty – 創造空物件
  • Create Empty Child – 創造空的子物件
  • 3D Object – 3D物件
  • 2D Object – 2D物件
  • Light – 燈光
  • Audio – 聲音
  • UI – 介面
  • Particle System – 粒子系統
  • Camera – 攝影機

由於我們是2D教學,因此點選2D Object中的Sprite

Sprite是一種純粹的2D材質物件,2D的遊戲物件不像3D那麼複雜,只需要用Sprite就能做到很多事情了,點擊後就會新增一個New Sprite到場景上,如下圖

新增之後會發現左上跟左下角的畫面一樣空空的,什麼東西都沒有,這是因為我們沒有替New Sprite設定他的圖形(Sprite),點擊New Sprite後會看到右邊的資訊框出現很多東西,其中的Sprite項目是None(Sprite),意思就是New Sprite尚未設定圖形。

這張圖是TG遊戲中其中一款射擊遊戲 [Ds維次空間] 所用的圖檔,歡迎自行下載使用,我要將這張圖片放進New Sprite中,將此圖檔拉進Project視窗之中開始匯入圖片,你也可以使用自己喜歡的任何一張圖片使用,匯入完成後會看到Project視窗多了一個士兵的圖檔。

回到New Sprite中,點擊屬性框Sprite最右方的小圈圈,會出現選擇Sprite檔案的視窗,也可以用拖曳的方式將「士兵」這個檔案拖曳至None(Sprite)的位置,亦可拖曳至Hierarchy視窗中直接建立一個Sprite物件。

設定好Sprite後點擊New Sprite兩下,Scene視窗會自動拉近到New Sprite的適當畫面,但是會發現左下角的遊戲視窗中,New Sprite的大小非常小。

因此我們選擇Main Camera更改他的Size屬性,我將它設定成1.5,這樣遊戲畫面中New Spriter就會變得比較大。Size屬性是指攝影機鏡頭所涵蓋的大小。

在這邊介紹一下Scene的操作方式,按住鍵盤中的Alt再用滑鼠點擊畫面移動就可以拖曳Scene的畫面,右鍵拖曳也可以拖曳畫面,滑鼠滾輪可以縮放Scene視窗的大小,左鍵可以選擇物件或框選物件。

以及以下快捷鍵

  • Q滑鼠會變成手掌,可以用左鍵拖曳畫面
  • W移動物件,被選中的物件會出現十字線條,分別是X軸跟Y軸,在3D模式會多出一個Z軸
  • E旋轉物件,有XYZ軸三軸可以旋轉,在2D中大多旋轉Z軸
  • R縮放
  • T Sprite選擇器,可以旋轉、移動、縮放Sprite物件

最後點擊Game視窗中的Maximize on Play(全螢幕撥放)後按下Ctrl+P播放(或著點擊畫面上方的撥放鍵),看看實際畫面如何。

看起來挺有意思的,我們繼續接下來的動作,在這之前我覺得一值打New Sprite太累人了,我們來將他更改成其他名字。

點擊資訊框最上方的輸入框,就可以更改物件的名稱,也可以從Hierarchy視窗中修改物件的名稱,在這邊我將New Sprite更改成「小飛兵」

接下來我們可以來撰寫程式碼了,在Project視窗點擊滑鼠右鍵,選擇Create(創建) -> C# Script(C#腳本),我的教學都是以C#為主要開發語言。

新增後命名為HelloWorld,在Project視窗會看到這個腳本。滑鼠雙擊後會跳出Unity預設的編輯器。

看到的畫面會長這個樣子:

using UnityEngine;
using System.Collections;

public class HelloWorld : MonoBehaviour {

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
print("Hello World!");
}
}

Start這個函數在物件一被創造時就會執行。

Update 遊戲每次刷新時會執行,用途最廣

我們來讓遊戲開始時會不斷輸出Hello World!,在Update中輸入

print("Hello World!");

print是輸出的方法,會在Unity編輯器的除錯視窗中出現文字。

按下Ctrl+S存檔,腳本就撰寫好了,接下來將腳本拖曳至物件身上,或著物件的資訊框上,就會為物件添加這個組件,這時腳本所寫的東西才會有功能產生。

按下播放鍵後會看到左下方出現Hello World!的除錯訊息。

點擊除錯訊息會出現除錯視窗,因為我們是寫在Update中,會看到訊息不斷的增加。

我個人習慣將除錯訊息擺在這個位置。

最後在主畫面按下Ctrl+S儲存,會跳出存檔的視窗,這是Scene的儲存視窗,每個Scene都是獨立的檔案,可以看做是遊戲中N個不同的關卡,而一個Project中可以包含無數個Scene。

本次教學就到這裡!

[ Unity 2D ] 教學 #02 – 基本的移動



相關文章

教學 #08 – 碰撞事件 Unity的碰撞事件與滑鼠點擊事件是差不多的撰寫方式,一樣是在腳本中打上函數名稱就能夠使用事件。 事件主要分成兩大類: OnCollision - 碰撞事件OnTrigger - 觸發事...
基礎教學 #05 – ClientRpc 遠端呼叫客戶端... ClientRpc是與Command相對的功能,是由「Server」去要求「Client」執行,兩者的撰寫方式是差不多的,只需要在函式前加上,不過函式名稱必須是「Rpc」開頭。 首先我先...
基礎教學 #01 – 前置作業 ---Unity 多人連線 UNet 教學 #01--- 為了教學上的方便,在UNet系列教學文中會使用2D專案做展示,會以讓大家「快速入門」為主要目標 在開始寫Code之前,我們必須先了解Uni...
教學 #13 – Camera(攝影機) 攝影機是遊戲中最重要的一項遊戲物件,它決定了玩家畫面中所能看見的遊戲畫面 在每一個新的場景(Scene)中一定會預設一個Main Camera,其意思就是「主要攝影機」,點擊Main C...