2012年8月14日火曜日

EditorScript入門

最近忙しくて記事を書くのがサボり気味です。
今回はお酒を飲みながらEditor拡張について扱います。

Unity大きな特徴としてEditor自身を簡単に拡張できるところがあります。普段利用している際にも細かいところに手が届かず、ちょっと困ることがあると思います。
そういった場合にEditor拡張を行うことでより自由自在にUnityを活用することが出来ます。

まずEditor拡張を行う際には専用のスクリプトを用意します。Projectタブの中にEditorフォルダを用意してください。その中に入れたスクリプトがEditor拡張用のスクリプトとして認識されます。注意すべきは、Projectのなかにあればどのような階層にあったとしてもEditorフォルダの中にあるものはすべてEditor拡張用として見なされてしまうという点です。Editorフォルダの中に入っているスクリプトに関しては実際にゲームをビルドする際には含まれません。そのため、ゲームの進行に必要なスクリプトはEditorフォルダに入れないようにしましょう。

Editor拡張を行う際にはUnityEditorの名前空間を指定する必要があります。そのためC#の場合は
using UnityEditor
とスクリプトのはじめに記述します。
そのごの細かい部分に関しては以下のスクショにて



こんな感じです。
具体的に何が出来るスクリプトかというと、シーン内にあるMeshの純粋な頂点数を計算しています。
Editor拡張を行う際にはEditorWindowなどのクラスを基底クラスとして拡張していきます。そして、主にOnGUIを利用してWindowの中のボタンやテキストフィールドを用意します。その際には今回利用しているGUILayoutクラスを利用することで綺麗に並べることが可能となります。

今回は利用していませんが、Assetの管理を行う際にはファイル操作の知識があると便利です。特定の形式のデータだけを抽出してソートする等、様々な使い方があります。


また、今回このスクリプトを作成した際に気がついたのはUnityのGameWindowにあるStatsで表示されるVertsは純粋な頂点数ではないということがわかりました。
具体的にはMesh自体が持っている超点数よりも2倍近く表示されているということがわかりました。
試しにCube(8頂点) のみを画面内においたところ頂点数が16と表示されていました。
これに関しては今後調査する必要がありそうです。



0 件のコメント:

コメントを投稿