Editor拡張
あらまし 開発中にカメラが増えてくると、調べたいオブジェクトがどのカメラに写っているかを調べるときがあり、探すのが面倒だったので作ってみた 実装 SceneView に写ってるこれをそのまんま利用すればできるんじゃないかと思ったので 公式のコードを参考…
Unity で IList (Array や List) を利用すると下図のような Editor UIが表示される これだと途中の要素を消すことができず、配列のサイズを変えたいときにも 数値を入力するのが面倒なので拡張することにした 実装 Inspector で利用することを想定して Seria…
あらまし UI を作成時に 不要な箇所の Text や Image の raycastTarget が true になってしまっていることがあり raycastTarget が true のオブジェクトが多いとそれだけパフォーマンスに問題が出るので、できるだけ無くしたい 実装後にあとから一つ一つ確認…
あらまし Hierarchy で GameObject を Duplicate (複製) した際に複製した GameObject の Scale が一致しないことがある Duplicate した GameObject の WorldScale が1じゃないときに発生しているような気がするが正しい原因は分からない また複製した GameO…
あらまし Unity で Collider を設定している際に選択しているオブジェクトの Collider しか表示されない 今回はすべて Mesh が見えているが Mesh が無くても Collider をセットすることもあり 個人的には下図のように見えてほしい そのため、選択していない…
あらまし Unity で Asset (例えば画像ファイル) を入れ替える際に Finder や Explorer から ドラッグアンドドロップ を行いファイルを入れ替えることがあると思う その際にファイル名が **** 1 になってしまい、前のファイルを消して 再度ファイル名を変更し…
Hierarchy Window を拡張するには EditorApplication.hierarchyWindowItemOnGUI を利用する 拡張処理を記述しないで、最低限の処理のみだと以下のコードになる using UnityEditor; using UnityEngine; public class HierarchyExtension { [InitializeOnLoadM…
Editor拡張作成時に利用できる Field のまとめ 説明が必要そうなものには説明を追記します EditorGUILayout > EditorGUI > GUILayout で無いもの順に記述しています GUILayout GUILayout.FlexibleSpace GUILayout.Space GUILayout.SelectionGrid GUILayout.B…
UI を作成している際に親の RectTransform の Rect を見つつ作業したいが 基本的には選択しているものしか範囲がわからないので UI を作りづらい これの解決方法として、編集する RectTransform 選択時親の Rect を描画することにする RectTransform の Rect…
UnityVersion 2018.4.14f1 DefaultAsset の Inspector 作成 [CustomEditor(typeof(DefaultAsset))] を定義することで DefaultAsset のInspector拡張を行える Unity2017くらいだと Scene ファイルも DefaultAsset 扱いだった記憶があるが、現在では SceneAsse…
SerializedProperty の表示 通常 SerializedProperty を利用して Editor の表示を行う場合以下ように記述する。 using UnityEditor; public class SampleEditor : Editor { private SerializedProperty _sampleProp; private void OnEnable() { _sampleProp …
EditorWindow の拡張を行っている際に ScriptableObject の Editor を取得し、 OnInspectorGUIを呼び出した際に CustomPropertyDrawerと Foldout を利用した際にUIがおかしくなりました 本来であればこう表示されます 原因調査 公式の Editor.cs を読んでい…
ProjectWindowにアイコンなどを表示する場合は以下のデリゲートを用いる EditorApplication-projectWindowItemOnGUI - Unity スクリプトリファレンス EditorWindowを継承したくないので、InitializeOnLoadMethodを利用する スクリプト サンプルとしてguidを…
UnityのInspector拡張を行う際にはCustomEditorを利用するが Unityのデフォルト型 (Transform や RectTransform等) の機能を残しつつ拡張する場合は 同じ処理を書く必要が出てくるそのため、以下のようなabstractを作成するといくらか拡張がマシになる using…
MenuItemを利用してツールバーにメニューを追加するのは簡単だが トグルメニューを追加するためには多少コードを追加する必要がある using UnityEditor; public class ToolBarToggleSample { private const string MENU_PATH = "ToggleSample/ToggleEnable";…
画像のようなInspectorのMenuItemの拡張方法を覚えてなかったのでメモがてら記事を書きます。 コンポーネントを指定しての記述 Unityの定義コンポーネントやContextをまとめたい場合などの場合の記述 [MenuItem("CONTEXT/{Component}/{MenuName}")] private …