エディター拡張

公式サイト:

エディター拡張 | Unity マニュアル [公式]

導入

参考:

エディタ拡張を始めよう – Qiita

エディタ拡張でエディタを自由にカスタマイズしよう!インスペクタビュー編 | XR-Hub

Editor を拡張をしてインスペクタをカスタマイズする | かめくめ

意外と楽しいエディター拡張 基本編 | おねむゲーマーの備忘録

エディター拡張の基礎 | Unity でコードから GUI を作る (kumaS)

概要

リンク:

エディター拡張マニアクス 2018 – SlideShare

メニューに項目を追加する (MenuItem)

メニューの項目が選択された時に呼び出すメソッドに、MenuItem 属性を記述する。

using UnityEditor;

public static class MyTools
{
    [MenuItem("MyTools/Message %#m")]
    public static void Message()
    {
        EditorUtility.DisplayDialog("Message", "Hello, World!", "OK");
    }
}Code language: C# (cs)
修飾キー
  • % Ctrl キー / Command キー
  • # Shift キー
  • & Alt キー / Option キー

動画:

Creating Menu Items (Unity3D School)

Menu Items – Hotkeys (Unity3D School)

Menu Items – Priority (Unity3D School)

Menu Items – Conditional (Unity3D School)

Menu Items – Component Context (Unity3D School)

ドキュメント:

MenuItem | Unity スクリプトリファレンス [公式]

MenuItem.MenuItem | Unity スクリプトリファレンス [公式]

参考:

Menu Item でショートカットキーを登録 | コガネブログ

Menu Item – メニューを追加するための属性は意外と多機能 | kan のメモ帳

Menu Item にショートカットキーを設定する | LIGHT11

自前のメニュー項目を表示する | かめくめ

独自のショートカットキーを作成する | kan のメモ帳

Menu Item で指定したショートカットキーを無効化する – Qiita

ショートカットキーをカスタマイズ – Qiita

ダイアログを表示する

動画:

Display Dialog – Popup Message with Options (Unity3D School)

ドキュメント:

EditorUtility.DisplayDialog | Unity スクリプトリファレンス [公式]

EditorUtility.DisplayDialogComplex | Unity スクリプトリファレンス [公式]

参考:

EditorUtility.DisplayDialog / DisplayDialogComplex – 確認するためのウィンドウ  | kan のメモ帳

確認ダイアログを表示する | うにてぃブログ

簡単なメッセージボックスをつくる | プログラムは、用いる言葉の選択で決まる

How to Show a Confirmation Dialog | Kindacode

ポップアップウィンドウを表示する

ドキュメント:

UnityEditor.PopupWindow | Unity スクリプトリファレンス [公式]

参考:

Tooltip のようなポップアップを表示する | LIGHT11

テキスト入力用ポップアップを実装する | LIGHT11

Property Drawer

ドキュメント:

Property Drawer | Unity マニュアル [公式]

参考:

自分だけの Property Drawer を作ろう! – Qiita

カスタムエディター

こちらのページを参照

ドキュメント:

カスタムエディター | Unity 2018.4 マニュアル [公式]

カスタムエディター | Unity マニュアル [公式]

UnityEditor.Editor | Unity スクリプトリファレンス [公式]

UnityEditor.CustomEditor | Unity スクリプトリファレンス [公式]

参考:

Editor 拡張をしてインスペクタをカスタマイズする | かめくめ

Inspector を拡張する – Qiita

CreateAssetMenu 属性

参考:

UnityEngine.CreateAssetMenuAttribute | Unity スクリプトリファレンス [公式]

UI Toolkit

こちらのページを参照

ドキュメント:

UI Toolkit | Unity 2020.3 マニュアル [公式]

UI ツールキット | Unity [公式]

学習:

UI Toolkit: First Steps | Unity Learn [Official]

参考:

UI Toolkit をランタイム UI として使ってみる – Qiita

UI Toolkit のランタイムサンプルを試す | Mitsuhiro Koga

新 UI システム UI Toolkit 触ってみた | CyberAgent

UI Toolkit に触れてみた | ファブテラスいわて

UI Toolkit 試してみる | しっぽを追いかけて

UI Toolkit で多人数開発は可能なのか?シンプルな画面遷移を作って検証してみる | Sumzap Engineering Blog

UI Toolkit メモ | フレームシンセシス

要素にスタイルを適用する

GUI.skin からスタイルを複製して使用する。

GUIStyle style = new GUIStyle(GUI.skin.button);Code language: C# (cs)

または、文字列で要素の種類を指定してインスタンスを生成する。

GUIStyle style = new GUIStyle("button");Code language: C# (cs)

ドキュメント:

GUI Style (IMGUI) | Unity マニュアル [公式]

GUI スキン (IMGUI) | Unity マニュアル [公式]

UnityEngine.GUIStyle | Unity スクリプトリファレンス [公式]

UnityEngine.GUISkin | Unity スクリプトリファレンス [公式]

GUI.skin | Unity スクリプトリファレンス [公式]

UnityEditor.EditorStyles | Unity スクリプトリファレンス [公式]

参考:

Label に色をつける | ざきのメモ

Label の装飾 | gologius の巣

GUIStyle でエディタの色を変えてみたよ | 徳島ゲーム開発ごっこ

EditorWindow で GUIStyle を使う際の注意 | うにてぃブログ

EditorStyles で使えるスキン一覧 | うにてぃブログ

GUIStyle で使用できる文字列の一覧を表示するエディタ拡張 | コガネブログ

Unity の GUIStyle でデフォルトで指定できるスタイル一覧 | A-Liaison BLOG

UnityEngine.GUIStyle | おなかすいたWiki!

USS

ドキュメント:

Style UI with USS | Unity Manual [Official]

USS Custom Properties (Variables) | Unity Manual [Official]

Built-in Unity Variables | Unity Manual [Official]

参考:

Unity 2019.3 で UIElements を使用してエディタの色を変更してみる | コガネブログ

Unity 2019.3 で UIElements を使用して Inspector の余白を減らす | コガネブログ

エディタの UI の色や形をスタイルシートで変えられる (2020.2b 新機能) | コガネブログ

Editor skinning thread – Unity Forum

why have you made your entire gui look like garbage now? – Unity Forum

Scripts for using Sass and Slim for UIElements layouts – Unity Forum

スクロールビュー

ドキュメント:

EditorGUILayout.BeginScrollView | Unity スクリプトリファレンス [公式]

EditorGUILayout.EndScrollView | Unity スクリプトリファレンス [公式]

Scroll Rect | Unity マニュアル [公式]

参考:

描画範囲が足りなければスクロールを実装するたった3行のコード | kan のメモ帳

Unity の Scroll View で一覧表示を作成する | TECH Projin

Scroll View の使い方、スクリプトからテキスト一覧表示の設定をする | 中堅プログラマーの備忘録

スクロールビューの基本と軽量なスクロールリストビューの作り方 – Qiita

スクロールビューでアイテム一覧を作成する | りつかのゲーム開発雑記ブログ

難解な Scroll View の基礎をわかりやすく解説 | hirokuma.blog

Scroll View を理解したい | 怠惰な日々にさよならを

意外と簡単! Unity でスクロールバーを実装する方法 | workpress

Scroll View – 範囲内に自動的にスクロールバーを出す | ケットシーウェア

Unity の Scroll View の使い方 | なんとかするから、なんとかなる

Scroll View の中身にサイズが一致せずスクロールしないときの対処 | JoyPlot

uGUI のスクロールがうまく表示できません – teratail

Custom inspector too tall causes horizontal scrollbar? – Unity Forum

Why the BeginScrollView is working fine in the inspector editor script but it’s not working in the editor window script? – Stack Overflow

プレビュー

ドキュメント:

UnityEditor.AssetPreview | Unity スクリプトリファレンス [公式]

Editor.DrawPreview | Unity スクリプトリファレンス [公式]

Editor.HasPreviewGUI | Unity スクリプトリファレンス [公式]

Editor.OnPreviewGUI | Unity スクリプトリファレンス [公式]

Editor.OnInteractivePreviewGUI | Unity スクリプトリファレンス [公式]

コード:

PreviewRenderUtility.cs – GitHub

参考:

プレビューなどに使う一時的なレンダリング用シーン (Preview Scene) の作り方 | LIGHT11

Modifying asset preview in Project – Unity Forum

Display a preview image in the GUI editor – Unity Forum

How to handle AssetPreview.GetAssetPreview – Unity Forum

Changing the preview image? – Unity Forum

プロジェクトウィンドウ (Project Window)

ドキュメント:

EditorApplication.projectWindowItemOnGUI | Unity スクリプトリファレンス [公式]

EditorApplication.RepaintProjectWindow | Unity スクリプトリファレンス [公式]

UnityEditor.EditorApplication | Unity スクリプトリファレンス [公式]

エディターツール (Editor Tools)

動画:

Editor Tools という機能について

ドキュメント:

EditorTools.EditorTool | Unity スクリプトリファレンス [公式]

参考:

エディタの左上に独自の機能を追加出来る EditorTool | kan のメモ帳

Unity 2019.1 から導入された EditorTool の紹介 | Yucchiy’s Note

Tools API – Unity Forum

ツールバーにボタンを追加する

参考:

ツールバーに特定シーン再生ボタンを追加する方法 – Qiita

エディタのツールバーの部分にボタンを追加してみる | コガネブログ

Toolbar Extender – エディタ上部の再生ボタンの両サイドにボタンを配置できるエディタ拡張 | コガネブログ

シーンビューにボタンを追加する

参考:

UI Elements で Scene ビューにツールバーを追加するエディタ拡張のサンプル | コガネブログ

それっぽいツールバー作成 | GREZZO 技術ブログ

ゲームビューにボタンを追加する

参考:

UI Elements で Game ビューにテキストやボタンを追加するエディタ拡張のサンプル | コガネブログ

編集モードでスクリプトを実行する (ExecuteAlways)

  • [ExecuteAlways] プレイモード/編集モード/プレハブモードの全てでスクリプトが実行される。
  • [ExecuteInEditMode] ※廃止
  • Application.IsPlaying ゲームオブジェクトがプレイモードに存在しているか判定する。

ドキュメント:

UnityEngine.ExecuteAlways | Unity スクリプトリファレンス [公式]

UnityEngine.ExecuteInEditMode | Unity 2019.4 スクリプトリファレンス [公式]

Application.IsPlaying | Unity スクリプトリファレンス [公式]

参考:

Editor上で GameObject を Update させる方法 – Qiita

エディットモード中に実行せずに一定時間おきに更新処理を行う方法 – Qiita

ExecuteAlways について | albatrus のブログ

Unity 2018.3 以降 ExecuteInEditMode アトリビュートは廃止に向かっていく | LIGHT11

ExecuteInEditMode を使うと編集中も処理を実行可能 | 強火で進め

スクリプトを Editor 上で動作させる | うにてぃブログ

スクリプトを Edit モードで実行 – Qiita

ExecuteInEditMode と関連コンポーネントの破棄対応について | ケットシーウェア

ExecuteInEditMode 終了の方法 – teratail

How to force update in edit mode – Unity Forum

特定のシーンを再生する

参考:

ツールバーに特定シーン再生ボタンを追加する方法 – Qiita

エディタ上でも Scenes in Build の一番上に登録されているシーンから再生を開始する | kan のメモ帳

ボタンを無効化する

ドキュメント:

EditorGUI.BeginDisabledGroup | Unity スクリプトリファレンス [公式]

EditorGUI.EndDisabledGroup | Unity スクリプトリファレンス [公式]

UnityEditor.DisabledScope | Unity スクリプトリファレンス [公式]

参考:

エディタ拡張で押せないボタンを作る | はなちるのマイノート

再生モードを判定する

ドキュメント:

EditorApplication.isPlaying | Unity スクリプトリファレンス [公式]

参考:

スクリプトからエディタを再生したり、停止したり、ポーズしたり、再開したり | kan のメモ帳

#if UNITY_EDITOR stuff getting called at runtime as well? – Unity Answers

エディター環境のみでコードを実行する

エディター環境でのみコードをコンパイルして実行させるには、該当する範囲を UNITY_EDITOR マクロを使用して #if / #endif ディレクティブで囲う。

#if UNITY_EDITOR
// Write codes here only for Editor
#endifCode language: C# (cs)

ドキュメント:

UNITY_EDITOR | Unity 2018.4 マニュアル [公式]

参考:

UnityEditor を使うとビルドエラーとなる – teratail

Update() only in Edit mode – Unity Answers

シリアル化/値を保持する

こちらのページを参照

ドキュメント:

スクリプトのシリアル化 | Unity 2020.3 マニュアル [公式]

ビルトインのシリアル化 | Unity 2020.3 マニュアル [公式]

UnityEngine.SerializeField | Unity スクリプトリファレンス [公式]

Serialization | Unity Blog [Official]

参考:

Unity を閉じても Editor Window の状態を保つ方法 | LIGHT11

Serialize fields only in Editor – Unity Forum

Store editor values between editor sessions – Stack Overflow

非同期処理

ドキュメント:

Editor Coroutines | Unity Manual [Official]

参考:

Editor でコルーチンが使える Editor Coroutines の使い方まとめ | LIGHT11

Editor Coroutines – Editor で Coroutineを使う方法! | dasuko の技術ブログ

Editor Coroutine Utility を使い、何か重要なバッチを走らせている風なダイアログを作る – Qiita

Editor Coroutine Utility – エディタ拡張でUnityを再生していない時でもコルーチンを使い非同期処理が行える | kan のメモ帳

エディタ拡張でコルーチンを使用できるパッケージが Package Manager からインストールできるようになった | コガネブログ

プログレスバー

ドキュメント:

UnityEditor.Progress | Unity スクリプトリファレンス [公式]

EditorUtility.DisplayCancelableProgressBar | Unity スクリプトリファレンス [公式]

EditorUtility.DisplayProgressBar | Unity スクリプトリファレンス [公式]

参考:

Progress – Unity のエディタ拡張時に非同期タスクの進捗状況を表示する | kan のメモ帳

エディタ拡張で進捗状況を表示する | kan のメモ帳

EditorUtility.DisplayCancelableProgressBar で途中でキャンセルも出来る進捗状況の表示 | kan のメモ帳

EditorGUILayout

こちらのページを参照

ドキュメント:

UnityEditor.EditorGUILayout | Unity スクリプトリファレンス [公式]

参考:

いろいろな GUI ~ EditorGUILayout 編 | ケットシーウェア

EditorGUI

ドキュメント:

UnityEditor.EditorGUI | Unity スクリプトリファレンス [公式]

コード:

EditorGUI.cs – GitHub

Handle Utility

ドキュメント:

HandleUtility | Unity スクリプトリファレンス [公式]

参考:

Manually Update/Redraw Scene View? – Unity Discussions

Handles

動画:

Handles #1 (Amrit Choudhary)

Handles #2 (Amrit Choudhary)

Gizmos (Amrit Choudhary)

Handle Caps (Adroit Things)

ドキュメント:

Handles | Unity スクリプトリファレンス [公式]

参考:

Handle Cap がクリックされたことを取得する | LIGHT11

Exploring Handle Caps | Adroit Things

Handles.CapFunction with Unity Editor – Game Development Stack Exchange

デバッグ

参考:

Editor 拡張開発で Visual Studio のデバッグ機能を使いたい | なつねこメモ

Unity Learn

Editor Scripting | Unity Learn [Official]

Introduction to Editor Scripting | Unity Learn [Official]

Creating Basic Editor Tools | Unity Learn [Official]

まとめ/Tips

こちらのページを参照

Editor 拡張メモ – Qiita

知っておくと少し幸せになる最低限のエディタ拡張 | テラシュールブログ

エディタ拡張チートシート | LIGHT11

エディター拡張チートシート | Unity でコードから GUI を作る (kumaS)

エディタ拡張の際によく使用する、基本的なクラスや関数まとめメモ | Bard は楽して暮らしたい

GUI / GUILayout / EditorGUI / EditorGUILayout の違い | うにてぃブログ

スクリプト集

自作したエディタ拡張 46個 まとめ | コガネブログ

知っておくと便利!エディタ拡張まとめ 9選 | CGメソッド

UI 制作に便利!エディタ拡張まとめ 13選 | CGメソッド

インスペクタウィンドウからメソッドを呼ぶ方法色々 | 12px.com

資料

エディター拡張マニアクス Unite 2018 (安藤圭吾) – SlideShare

Editor スクリプティング入門 (Keigo Ando) – SlideShare

知って得する エディタ拡張編 (Shota Baba) – SlideShare

教材

入手:

エディター拡張入門 | 安藤圭吾

チュートリアル

Editor Tools という機能について

Build Awesome Easy to Use Tools with Custom Editors!

プレイリスト

Amrit Choudhary – YouTube

Otter Knight – YouTube

ACDev – YouTube

Unity3D School – YouTube

Annotation Utility

コード:

AnnotationUtility.bindings.cs – GitHub

Scene View のアイコンを表示/非表示するエディタ拡張 – GitHub Gist

参考:

特定のギズモをオン/オフするエディタ拡張 | MEBIUSTOS のブログ

Scene ビューのすべてのギズモの表示をオフにするエディタ拡張 | コガネブログ

MRDesignLabs_Unity のアイコンの表示/非表示を行うエディタ拡張 | Hiromu ブログ

How to hide Gizmos by script – Unity Answers

“Uncheck all” in Gizmos menu in Scene view? – Unity Answers

visible / hidden gizmos – Stack Overflow

Game View Size Helper

リポジトリ:

anchan828/unity-GameViewSizeHelper: Script から Game View Size を作成、また設定するヘルパークラス – GitHub

参考:

Game View Size Helper で Game ビューの解像度を変更した後に UI の描画位置を更新する方法 | コガネブログ

Hierarchy Pro

入手:

Hierarchy Pro 2021 | Unity Asset Store [Official]

Hierarchy Pro 2021 – Extended | Unity Asset Store [Official]

Persistent Among Play Mode

リポジトリ:

tsubaki/SerializedParameter_Unity – GitHub

参考:

エディタでゲーム再生中に変更した値を停止しても消さない #2 | テラシュールブログ

Property Drawer Collection

リポジトリ:

anchan828/property-drawer-collection: カスタムプロパティの作品集 – GitHub

UI Elements Sass

リポジトリ:

eidetic-av/UIElements-Sass: Create UI Elements USS Stylesheets Using Sass Language – GitHub

Unity Utils (uranuno)

  • Tag and Layer Attribute
  • Min Max
  • PlayerPrefs Data

リポジトリ:

uranuno/UnityUtils: My Unity Utils – GitHub

参考:

値の最小値と最大値をいい感じに入力する Property Drawer | uranuno

頂点ペイント

参考:

頂点カラーペイントツールを作ってみた – Qiita

地形ペイント

コード:

TerrainPaintTool.cs – Unity-Technologies/UnityCsReference – GitHub

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA