Editor拡張AdvertisementEditorGUILayout.ObjectFieldやEditorGUI.ObjectFieldはGUIStyleを設定できないため、これらのコントロールは見た目の変更ができません。そこで、GUIStyleを自由に変更できるObjectFieldを作成しました。参考サイトScript作成したscriptは以下の通りです。ボタンなしボタンがない場合のオブジェクトフィールドのScriptです。T;}ボタンありボタンがある場合のオブジェクトフィールドのScriptです。T;}EditorGUIUtility.ObjectContentにより、オブジェクトの名前とそのオブジェクトの型に応じたアイコンを有するGUIContentを取得することができます。取得したGUIContentはObjectFIeldを表示する際に使用します。typeof(T));コントロール用のIDとオブジェクトピッカー用のIDを取得します。GUIUtility.GetControlID(FocusType.Passive);ObjectSelectorUpdatedはオブジェクトピッカーで選択されたオブジェクトが変更された際に呼び出されます。EditorGUIUtility.GetObjectPickerControlIDにより開かれているオブジェクトピッカーのIDが取得できます。これらを用いてこのコントロールで開かれたオブジェクトピッカーで選択されたオブジェクトに変更があったかを判定することができます。これらの条件が満たされた場合にEditorGUIUtility.GetObjectPickerObjectによってオブジェクトピッカーで選択されたオブジェクトを取得します。EditorGUIUtility.GetObjectPickerObject();HandleUtility.Repaint();}ドラック&ドロップドラック&ドロップが操作されているときの処理です。ドラックEventType.DragUpdatedはドラック&ドロップで操作が更新された時、EventType.DragPerformはドラック&ドロップの操作を実行したときに呼ばれます。ドラックに関する処理はこれらのイベントが発生しているときに行います。//マウスカーソルの見た目を変更する。DragAndDrop.AcceptDrag();//ドラックされているオブジェクトがT型へ変換できる場合//マウスカーソルの見た目を変更する。0;}break;ドロップドロップが実行されるとEventType.DragExitedが呼ばれます。コントロール内へドロップが実行された時、コントロールへオブジェクトを格納します。0;}break;マウスクリック左クリックされた際の処理です。ラベルやオブジェクトフィールドの見た目を変更、ボタンクリック時にオブジェクトピッカーを開く及びオブジェクトをProjectビュー内でハイライト表示を行います。if(rect_obj.Contains(mouse_pos)){//コントロールがクリックされた際、//格納されているオブジェクトをProjectビュー内でハイライト表示EditorGUIUtility.PingObject(obj);}break;コントロールの描画コントロールの描画はGUIStyle.Drawを用いて行います。GUIStyle.DrawはRepaint時にのみ実行します。作成したObjectFIeldを実行するScriptは以下の通りです。false);}}上記Scriptを実行すると以下のように動作します。オブジェクトピッカーやドラック&ドロップによりコントロールへオブジェクトを格納できていることが分かります。2020.06.07GUIStyleを自由に変更できるようSliderを自作しました。コメントをキャンセルメールアドレスが公開されることはありません。WordPress.。