[ Unity 2D ] 教學 #09 – 獲取Component(組件)資訊

標籤: , ,

每個GameObject都帶有數個Component組件,而我們自定義的腳本中常有一些需要抓取的資訊,例如角色的血量、速度等等的,就必須抓取物件Component中的一些參數。

GetComponent<Move>();//獲取物件的Move組件
  • –名詞解釋–
  • GetComponent – 獲取組件
  • Move – 之前寫的C# Script

使用GetComponent可以抓取任意類別的組件,程式碼中的Move是「教學02 基本的移動」中所使用的,使用GetComponent抓取到的組件可以用同類型的變數去接收,如:

Move mymove = GetComponent<Move>();//獲取物件的Move組件並設定給mymove

為了說明的更仔細一點,在這邊做個簡單的示範。我們使用之前一直使用到的小飛兵專案,不過在示範之前先整理一下Project視窗的檔案,可以點擊右鍵Create -> Folder新增資料夾來整理檔案。

首先新增一個用來被抓取資料的腳本,我命名為Unit(單位),裡面會存放角色在遊戲中的屬性數值

開啟後撰寫以下程式碼

using UnityEngine;
using System.Collections;

public class Unit : MonoBehaviour {
 public string UnitName = "New Unit";//名稱預設為新單位
 public int HP = 10;//生命值預設為10
 public float Speed = 2;//速度預設為2

 void Start () {
 
 }

 void Update () {
 
 }
}

設定UnitName(名稱)、HP(生命值)、Speed(速度)三個變數作為角色的屬性,Speed數值用來控制角色移動的速度,這些數值可以直接從Unity編輯器的屬性視窗中進行更改。

接下來開啟之前寫過的Move腳本,修改程式碼如下

using UnityEngine;
using System.Collections;

public class Move : MonoBehaviour
{
 Unit unit;

 void Start()
 {
    unit = GetComponent<Unit>();//獲取遊戲物件的Unit組件
 }

 void Update()
 {
    float speed = unit.Speed;//將unit中的Speed參數抓出來到speed變數中

    if (Input.GetKey(KeyCode.LeftArrow))
    {
       transform.Translate(Vector2.left * Time.deltaTime * speed);
    }
    if (Input.GetKey(KeyCode.RightArrow))
    {
       transform.Translate(Vector2.right * Time.deltaTime * speed);
    }
    if (Input.GetKey(KeyCode.UpArrow))
    {
       transform.Translate(Vector2.up * Time.deltaTime * speed);
    }
    if (Input.GetKey(KeyCode.DownArrow))
    {
       transform.Translate(Vector2.down * Time.deltaTime * speed);
    }
 }
}

這樣就可以藉由修改Unit中Speed的值來控制角色移動的速度了,測試時可邊移動邊修改數值查看效果,若是照著之前教學一直做到這的人,記得將Rigidbody的Is Kinematic(運動學)勾選,否則小飛兵是會受重力掉下去的。

[ Unity 2D ] 教學 #10 – 小總結●小飛兵 射擊遊戲實作(一)



相關文章

教學 #14 – Scene(場景) Scene是個很重要的環節,在中文稱為「場景」 以比較直覺的方式來說明的話,Scene可以當作遊戲中的關卡,每一個關卡都是獨立的Scene 在Unity的工具列中,File下會看到...
教學 #01 – 物件建立與Hello World! 上一篇文章中提到安裝與版面配置,這一篇文章中我們來撰寫第一行程式碼 目前我們的畫面應該是長這樣的 Hierarchy中有一個Main Camera 在上一篇文章中我們有提...
教學 #08 – 碰撞事件 Unity的碰撞事件與滑鼠點擊事件是差不多的撰寫方式,一樣是在腳本中打上函數名稱就能夠使用事件。 事件主要分成兩大類: OnCollision - 碰撞事件OnTrigger - 觸發事...
教學 #02 – 基本的移動 在Unity中,所有與位置、旋轉、縮放相關的功能都由Transform這個組件控制 而transform這個屬性便是用來抓取遊戲物件(GameObject)上的Transform組件 以...