Unity 備忘録テクニック(Unity エディタのメニュー 3)




皆さんこんにちは、プロクラスの野間です。

今回は Unity Editor メニューカスタマイズの続きになります。
第三回となる今回は GameObject から一歩進んで、画像を Assets から Hierarchy にドラッグした時に出来る GameObject 、そう、Sprite を作ってみます。
と、その前に Unity の基本を確認。

■Component

Unity での GameObject の機能は Component で決まります。
つまり、画像を Hierarchy にドラッグした時に出来る Sprite と同じものを作りたい時は、
同じ Component を Add Component してやれば良いのです。

ですので、Script でやる前に UnityEditor で手動で同じものを作ってみましょう。

■手動で作ってみる

さて、作るものを確認してみます。
普段通り画像をドラッグして

00

できたものの Inspector を確認してみると。

01

・Transform
・Sprite Renderer
この2つで構成されている事がわかります。
実にシンプルですね。

これから作るものがわかるように、今作った GameObject は無効にしておきましょう。

02

では手動で作ってみます。

1)空の GameObject を作成(メニューの GameObject > Create Empty)

03

Inspector を見ると Transform だけです。
04
確かに空っぽですね。

2)Sprite Renderer を追加(Add Component > Rendering > Sprite Renderer)

05 06 07

ですが、Scene や Game 画面には何も出ていません。
よ~くみると・・・

08 09

名前が違う!・・・は、関係なく、Sprite の指定が違います。
そこで、ここにAssetsの画像をドラッグしてやると・・・

10 11

同じものが表示されました。
00

これにて手動で実験は終了です。
次はいよいよ Script でやってみます。

またまたその前に、これから作るものがわかるように、今、空の GameObject から作ったものを無効にしておきましょう。

■メニュー用の Script で作ってみる

まずは手動手順1の「空の GameObject」作成です。
前回やりましたが、Script で GameObject を作成するのは
new GameObject (名前);
で作成できます。
これは手動でやった「空の GameObject 作成」と同じものが出来ます。
※メニューの作り方~GameObject の作成までがわからない方は前のブログを参照

Unity 備忘録テクニック(Unity エディタのメニュー)

Unity 備忘録テクニック(Unity エディタのメニュー 2)

#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using System.Collections;

public class MenuScript : MonoBehaviour {
	[MenuItem("Custom/Craete")]
	static void Start () {
		GameObject obj = new GameObject ("Test");
	}
}
#endif

動作確認してみましょう。

12 13


次が手動手順2の Sprite Renderer の追加ですが、
ゲームオブジェクト.AddComponent<SpriteRenderer> ();
これで手動手順2の SpriteRenderer の追加と同じものが出来ます。

#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using System.Collections;

public class MenuScript : MonoBehaviour {
	[MenuItem("Custom/Craete")]
	static void Start () {
		GameObject obj = new GameObject ("Test");
		SpriteRenderer sp = obj.AddComponent ();
	}
}
#endif

動作確認してみましょう。

14 15


最後の手動手順3ですね、
いよいよ画像を Sprite Renderer の Sprite にドラッグですが、
もちろん Script ではドラッグなんてしません。
まずは Assets にある画像を読み込むには
AssetDatabase.LoadAssetAtPath<Sprite> (“Assets/画像ファイル名”);
※拡張子も必要です。
今回の例では「proclass.png」を使っています。

そして、これを Sprite Renderer の Sprite に代入すればOKなので、
全部まとめると次のようになります。

#if UNITY_EDITOR
using UnityEditor;
using UnityEngine;
using System.Collections;

public class MenuScript : MonoBehaviour {
	[MenuItem("Custom/Craete")]
	static void Start () {
		GameObject obj = new GameObject ("Test");
		SpriteRenderer sp = obj.AddComponent ();
		sp.sprite = AssetDatabase.LoadAssetAtPath ("Assets/proclass.png");
	}
}
#endif

これで同じものが出来ました。

16 17
18

今回はここまで。