土屋つかさの技術ブログは今か無しか

土屋つかさが主にプログラミングについて語るブログです。

Unity Tips(1)

 お仕事でゲームエンジン研究をさせてもらえる事になりまして、現在Unityの勉強中です。ラーニング中で気づいたことや、はまったことについて雑多に書いていきます。間違っている個所もあるかと思うので指摘してもらえると助かります(いずれまとめられたらいいな)

GameObjectとはなにか

・UnityEngine.GameObjectクラスのインスタンス(sealdで派生クラスは作れない)
・Transformコンポーネントクラスをデフォルトで保持している(なのでTransformコンポーネントは破棄できない)
・GameObject自体は機能を持っておらず、コンポーネント(MonoBehaivior派生クラス)を追加して機能を構成する(Cubeなどのデフォルトのゲームオブジェクトも同様)。

コンポーネントとはなにか

・ゲームオブジェクトにアタッチ可能なクラスインスタンスのこと。
・UnityEngine.Componentクラスの派生クラスはすべてコンポーネントになる。
・MonoBehaviourクラスもComponentクラス(正確にはComponentから派生したBehaviourの派生クラス)。
・スクリプトはMonoBehaviourを継承することでコンポーネントになる。

Projectに登録してあるアセット(or プレハブ)を動的に生成する方法

//Resoruces/folder配下にあるCubeプレハブを生成する例
GameObject Cube = Instantiate(Resources.Load("folder/Cube", typeof(GameObject))) as GameObject;

Resources.Load
https://docs.unity3d.com/jp/540/ScriptReference/Resources.Load.html
・\Assets\Resources\フォルダ配下のアセットを読み込める
・Textureなどの非コンポーネントオブジェクトを読み込むことができる。本来は読み込んだアセットをAddCompornentするための機能
・ちなみに、Instantiateメソッドを単体で使う場合は以下のようにして、Inspector経由でアセットを設定する。

public Transform myCube;//Inspectorからアセットを設定する。

void Start () {
    Instantiate(myCube, transform.position, transform.rotation);
}