概要
Animator ControllerとかBehavior Designerのようにノードを作る為のFrameworkを探していたらSimpleNodeEditorを見つけたので紹介します。
このFrameWorkには下記のようなノードエディタの為の基本的な機能が揃っています。
- ノード作成
- ノード同士の接続
- ノードのSave,Load
- ランタイム実行
また、FrameworkのNodeクラスをオーバーライドしてカスタマイズすれば、Behavior Designerのみたいな自前のAIノードエディタを作ることもできます。
Behaviour Designer
自分は実際にこのフレームワークを拡張して、自前でBehavior Designerのようなツールを比較的簡単に作成する事が出来ました。そのツールの紹介は次回に行うとして今回は、このフレームワークの使い方の紹介をします。
導入方法
githabのプロジェクト一式をクローンします。
https://github.com/Baste-RainGames/Node_Editor
適当なUnityプロジェクトを作成して、Assetsディレクトリ以下にクローンしたプロジェクトを突っ込み、Unityを立ち上げます。
「Window」の一覧に「Node Editor」が追加されているので、ここからNodeEditorWindowを開きます。
「Load Canvas」でCaluculation Canvas.assetをロードすると、下記のようなノードが表示されます。とりあえずここまで出来れば導入は完了です。
プロジェクト構成の説明
重要なクラスを掻い摘んで説明します。
Editor/NodeEditorフォルダ
- NodeEditorWindow.cs
- TOPのクラスです。
- Resources/
- cashファイルを管理するフォルダです。
Node_Editor/Frameworkフォルダ
- Node.cs
- 各ノードが継承する規定クラスです。独自機能のノードクラスを作成したい場合はこのクラスを継承して作成します。
- Node/
- サンプルプロジェクトで使われている各個別のノードクラスが入っています。Node.csを継承して如何に独自ノードを作るのかの参考になります。
Node_Editor/Resources/Saves/フォルダ
- ノードの保存ファイルが管理されています。保存ファイルはScriptableObjectとなります。
Node_Editor/フォルダ
- RuntimeNodeEditor.cs
- EditorWindowではなく、Gameビューにノードエディターを表示できます。GameObjectにアタッチして使用します。Game実行中のスクリプトとノードエディタとの連携をとりたい時に利用します。
使用時の注意点
このフレームワークはとてもよくできていますが、まだ開発途中段階のためか幾つかのバグがみられます。実際に、自分もフレームワークを使っていく中でバグ修正を行ってプルリクを出したものもありました。
ただ、こちらの問いかけに対する作者の人の反応も結構早いので、気になる点があればUnityのフォーラムや、github上のissuesに投稿するといいと思います。
Unityフォーラム
http://forum.unity3d.com/threads/simple-node-editor.189230/page-10