隣のデスク覗く言語さん

unityとかc#とかの勉強・発見ログです.参考まで.

publicを利用してGameObjectをコンポーネント上で操作できるようにする

はじめに

前回の続きみたいなものです.

前回はpublic指定した値をコンポーネント上で操作する機能について説明しました.
今回は数値ではなくヒエラルキー上にあるオブジェクトも操作できることについて説明します.

publicでGameObjectの変数を宣言

まず,適当に空のオブジェクト(Create Empty)を用意して,New Scriptをコンポーネント上で作成します.今回はそれをGameobject_rotationという名前にしておきます.

 

f:id:gengoshori:20180111134023j:plain

この時点では何もありません.スクリプトを下記のように編集します.

Gameobject_rotation.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Gameobject_rotation : MonoBehaviour {
    //publicで指定したオブジェクトを回転させるだけのスクリプト
 
    public GameObject rotation_t;
 
    void Update () {
        rotation_t.GetComponent<Transform>().Rotate (3, 2, 1);
    }
}
 

今回も回転させるだけのスクリプトですが,違いはpublic指定している変数rotation_tの方がGameObject型であるということです.
rotation_tのTransformというコンポーネントをGetして,Transformの中のRotateを(3,2,1)にしてね,という意味のスクリプトをUpdate()に記述します.

こうすると,コンポーネント上ではどうなっているかといいますと

f:id:gengoshori:20180111134109j:plain

前回数値が入力できたかのように,Gameobjectを入力できます.変数名はRotation_tですね.

GameObjectの入力の方法は,2種類
ヒエラルキー上のオブジェクトをドラッグ・アンド・ドロップ
②右側の◎みたいなマークをクリックしてオブジェクトを選択

今回は②のパターンでやってみます.[None(Game Object)]の右側にある◎みたいなものをクリックすると

 

f:id:gengoshori:20180111134115j:plain

ヒエラルキー上にあるオブジェクトが一覧で表示されます.Assetで色々ダウンロードしていたらもっとたくさん出てきます.今回は予め生成しておいたCylinderを選択します.Cylinder…つまりは円柱ですね.

 

f:id:gengoshori:20180111134124j:plain

選択できました.これで,スクリプト上ではRotation_tはコンポーネント上にあるCylinderになります.

実際の挙動

この状態で実行しますと

f:id:gengoshori:20180110233114g:plain

 

やったぜ動いたぜ.
このようにしてヒエラルキー上にあるオブジェクトを視覚的に指定して,スクリプトに載せることができます.直感的にやりやすい…

 

まとめ

publicでGameObjectを指定することでヒエラルキー上のオブジェクトを操作することができる.

工夫次第では,同じスクリプトで同じ挙動をさせたいけどオブジェクトが異なるものを,同じスクリプトで賄うことができます.しかも視覚的に確認できる.良いですね.