2013年

11月

19日

Unity Editorを始めよう

Unity EditorはExcel VBAを作る感覚

Unityというと3Dゲームエンジンとして有名だけど、

ゲームの作り方を今更書いたとしても仕方がない。

 

ゲームを作る制作過程の中で毎回知らず知らずのうちに同じことを行っていないだろうか。

 

Excelで仕事量を短縮するために、よくVBAを作成していた。

UnityでもExcel VBAのようなスクリプトを組むことが出来る。

 

それが、「Unity Editor」だ。

 

(基本的にC#でスクリプトを組むのでサンプルソースはC#とする。)

 

 

エディタの拡張 / Extending the Editor

http://docs-jp.unity3d.com/Documentation/Components/gui-ExtendingEditor.html

メニューの追加

メニュー項目の追加
メニュー項目の追加

次のソースコードでメニューの追加を追加することが出来る。

using UnityEngine;
using UnityEditor;

public class MyWindow : EditorWindow {

        // Add menu named "My Window" to the Window menu
        [MenuItem ("Window/My Window")]
        static void Init () {
                // Get existing open window or if none, make a new one:
                EditorWindow.GetWindow (typeof (MyWindow));
        }
}

Editorフォルダを作成し、ソースコードを追加する
Editorフォルダを作成し、ソースコードを追加する

ただし、作成したソースコードのファイルをEditorフォルダに追加しないと、

Editorソースとして認識されない。

Editorフォルダはどこの階層に置かれても、Editorソースとして認識される。

ウィンドウをカスタマイズしよう

基本図形をボタンから作成
基本図形をボタンから作成

ウィンドウをカスタマイズしよう。

まずは簡単なところで、

ボタンを押すと基本図形が作成出来るから初めて見よう。


using UnityEngine;
using UnityEditor;

public class MyWindow : EditorWindow {

        // Add menu named "My Window" to the Window menu
        [MenuItem ("Window/My Window")]
        static void Init () {
                // Get existing open window or if none, make a new one:
                EditorWindow.GetWindow (typeof (MyWindow));
        }

        void OnGUI () {
                
                if(GUI.Button(new Rect(10, 10, 100, 50), "Cube"))
                {
                        GameObject.CreatePrimitive(PrimitiveType.Cube);
                }

                if(GUI.Button(new Rect(110, 10, 100, 50), "Spere"))
                {
                        GameObject.CreatePrimitive(PrimitiveType.Sphere);
                }

                if(GUI.Button(new Rect(10, 70, 100, 50), "Capsule"))
                {
                        GameObject.CreatePrimitive(PrimitiveType.Capsule);
                }

                if(GUI.Button(new Rect(110, 70, 100, 50), "Cylinder"))
                {
                        GameObject.CreatePrimitive(PrimitiveType.Cylinder);
                }

                if(GUI.Button(new Rect(10, 130, 100, 50), "Plane"))
                {
                        GameObject.CreatePrimitive(PrimitiveType.Plane);
                }
                
                if(GUI.Button(new Rect(110, 130, 100, 50), "Quad"))
                {
                        GameObject.CreatePrimitive(PrimitiveType.Quad);
                }
        }
}

 

 

既存メニュー項目はEditorで作れるのでは?

簡単な基本図形を出力するEditorスクリプトが作れた。

既存のメニュー項目はEditorスクリプトですべて作れるんじゃないだろうか?

そんな気がしてくる。

出来るかどうかはまだ分からないけれど、

・Unityで制作をする際に足りない機能がないだろうか?

・同じことを毎日繰り返していないだろうか?

・こんな機能あったらいいなぁと思ったことはないだろうか?

 

Excelで同じ作業を毎日していてウンザリしたとき、VBAを作りました。

 

Unityも同じようにきっとうんざりするようなルーチンワークがあるはず。

 

自分独自のルーチンワークをEditorで解決してみてはどうだろうか。

Hey Visitor!

Twitter