ラベル Unityエディタ拡張 の投稿を表示しています。 すべての投稿を表示
ラベル Unityエディタ拡張 の投稿を表示しています。 すべての投稿を表示

2016年5月16日月曜日

[UnityEditor拡張]Inspectorの配列のラベルをenumに差し替える

Inspectorに配列やリストを表示すると要素のラベルが「Element 0」「Element 1」...になるのをenumで置き換えるエディタ拡張を作りました。
上を下に置き換える。


使い方

配列のフィールド属性にEnumLabelを付けるだけ。引数はtypeof(enumの型)。


ソースコード

配列要素のlabelの「Element 0」の数字部分をパースして対応するenumに置き換えているだけ。


問題点

sizeの入力を縛っていないので、enumの定義数と配列の要素数に関係がありません。
要素数がenumの定義より多い場合はこうなります。

PropertyDrawer.OnGUIの引数のpropertyで取れるのが配列要素のpropertyなので、配列全体のGUIを制御することができずこの実装となりました。
配列やリスト全体の表示を描き換える方法ってないんですかね?

2017/12/23追記

コメントにて指摘をいただきましたので反映いたしました。ありがとうございます!
EditorGUILayout#PropertyField()はbool値で子要素を展開するかを指定できるようです。常にtrueでいいような...
ちなみにこの記事の内容は古くて最新のUnityに対応しているかはわかりません。ちゃんと動作させた環境の情報は書こうな...

2016年4月14日木曜日

[UnityEditor拡張]Editor上でスクリーンショットを連続で撮れるようにする

前回の発展形、UnityEditor上で再生中のゲームのスクリーンショットを撮影しまくるエディタ拡張です。



つかいかた

メニューの Extension -> Sequence Screenshot を選択すると上の画面が開きます。
あとはゲームの再生中に「Capture Start」を押すと連続でスクリーンショットを撮ってくれます。
ボタンとゲーム再生の手順は逆でもOKです

Start Capture / Stop Capture
撮影の開始と終了を指示するボタンです。

Output Folder
キャプチャ画像の出力先フォルダのパスです。
下の「Select Folder」ボタンでフォルダ選択ウィンドウが開きます。

Filename Prefix
キャプチャ画像のファイル名の前につける文字列です。

Filename Suffix
キャプチャ画像のファイル名の後につける文字列です。

Interval
撮影の時間間隔です。単位は秒。
例えば、5を指定すると5秒おきにキャプチャされます。

Max Capture Count
最大撮影枚数です。0以下を指定すると無限に撮影し続けます。
指定された枚数の撮影が終わると自動的に「Stop Capture」が押された状態になります。

Identify Method
撮影されたスクリーンショットを識別する方法です。
  • 「Timestamp」ファイル名にタイムスタンプを使用します。
  • 「SerialNumber」ファイル名に連番を振ります

Timestamp Format
ファイル名にタイムスタンプを使用するとき、タイムスタンプの形式を指定します。

Offset
ファイル名に連番を使用するとき、最初の番号を指定します。

Reset Serial Number
押すと次に振られる連番の番号を「Offset」の番号に変更します。

Current Serial Number
次に振られる連番の番号です。

Filename Sample
ファイル名はだいたいこんな感じになるよーっていう見本です。


ソースコードはこちら。

2016年4月12日火曜日

[UnityEditor拡張]Editor上でスクリーンショットを撮れるようにする

UnityEditorで再生中のゲームのスクリーンショットが撮りたかったので
初のEditor拡張にチャレンジ...っていうほどでもなく簡単にできた。



このメニューをクリックすると、再生中でなければ何も起きず、
再生中ならばプロジェクトのルートディレクトリに現在の日時.pngを生成します。

ソースコードはこちら。3行。