UnityEditor
PropertyDrawerでデフォルトのGUIを描画する方法です。 Inspectorを拡張する際には簡単にデフォルトGUIを描画できるのにPropertyDrawerだと難しいので作りました。
PropertyDrawerなどGUILayout系が使えない環境でMonoBehaviourのインスペクタを描画する方法です。 インスペクタはGUILayout環境を前提としているので結構hackyなことをしています。意外と大変でした。
Unity2018.3以降ExecuteInEditModeアトリビュートは廃止に向かっていくお話です。
Unityでセーフエリアをエディタ上でシミュレートする方法です。
自分用メモ。更新していくかもしれません。
Hierarchyの表示をカスタムする方法です。
ReorderableListの使い方です。
Unityのデフォルトのリスト表示は場合によっては結構見づらいので拡張してみました。
エディタ拡張ではプロパティをEditorGUILayout.PropertyField()などを使って描画します。 ただしこの方法だとすべてのプロパティを描画したいときに一個一個書いていく必要があります。 この記事ではすべてのプロパティを一気に描画する方法を紹介します。
こんな感じでクリックするとデバッグ用のメニューが開くドロップダウンを作ってみます。 レイアウトは自由に組めるので別にデバッグ用じゃなくてもいいのですが、今回はデバッグ用を想定して作っています。 デバッグメニューは目立つところに置くと邪魔にな…
あるフィールドの値に応じて別のフィールドの表示状態を切り替えるAttributeを作る方法です。
久々にエディタ拡張で盛大にハマったので自分用にメモしておきます。 Custom AttributeとCustom Property Drawerを組み合わせたらInspectorがうまく表示されなくなった件とその対応方法です。
シーンのGI設定を自動化する方法です。
シーンのGIの設定をチェックするツールです。
Assetが生成された時にだけ処理を行う方法です。 AssetPostprocessorのタイミングで処理を行いたいものの、 リインポートや移動のときには処理をスキップしたい場合に使えます。
Unityのエディタ拡張で文字列をファイルに保存する方法です。
別階層のcgincを変更してもそれをincludeするシェーダがコンパイルされない(されなかった)話です。 Unity2018では修正されているようなのでこれから直面する方は少ないと思いますが一応。
テクスチャをリサイズするウィンドウです。
TreeViewをマルチカラム表示する方法です。
Unityのエディタコードを読んでいたらTreeViewというものの存在を知ったので軽くまとめます。
Unityを再起動してもスクロール位置や折りたたみの状態など、EditorWindowの状態を保つ方法です。
EditorWindowのOnEnableはWindowを開いた時だけでなく スクリプトのコンパイル時にも呼ばれるという話です。
Model ImporterでSource Avatarが更新された時にUpdateボタンを押す処理を自動化する方法です。
エディタ拡張でHDRテクスチャをLDRにエンコードするウィンドウを作る方法です。
スクリプトからPrefabを操作する方法です。 Unity2018.3以降の新Prefabワークフローに対応した内容となっています。 Unity2018.2以前はこちらの記事を参照してください。 light11.hatenadiary.com
シェーダコードは一般的にプロジェクトの規模が大きいほど共通化の重要性が増しますが、 共通化のために知っておかなければいけない知識がそれなりにあるのでまとめました。
使用するTEXCOORDをマテリアルから指定できるようにする方法です。
シェーダプロパティ用のアトリビュートを自作するMaterialPropertyDrawerの使い方です。
KeywordEnumがスクリプトから扱いづらい問題とその解決案です。
MaterialのInspectorでブレンドモード(加算とか乗算とか)を選べるようにしてみます。