次の項目は別ページに分割しました。
関連ページ:
エディター拡張
公式サイト:
導入
参考:
エディタ拡張でエディタを自由にカスタマイズしよう!インスペクタビュー編 | 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
Menu Item で指定したショートカットキーを無効化する – 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
Property Drawer
ドキュメント:
Property Drawer | Unity マニュアル [公式]
参考:
自分だけの Property Drawer を作ろう! – Qiita
カスタムエディター
CustomEditor
属性 (→ CustomEditor )Editor
クラス (→ UnityEditor.Editor )
ドキュメント:
カスタムエディター | Unity 2018.4 マニュアル [公式]
UnityEditor.Editor | Unity スクリプトリファレンス [公式]
UnityEditor.CustomEditor | Unity スクリプトリファレンス [公式]
参考:
Editor 拡張をしてインスペクタをカスタマイズする | かめくめ
CreateAssetMenu 属性
参考:
UnityEngine.CreateAssetMenuAttribute | Unity スクリプトリファレンス [公式]
UI Toolkit
ドキュメント:
UI Toolkit | Unity 2020.3 マニュアル [公式]
学習:
UI Toolkit: First Steps | Unity Learn [Official]
参考:
UI Toolkit をランタイム UI として使ってみる – Qiita
UI Toolkit のランタイムサンプルを試す | Mitsuhiro Koga
新 UI システム UI Toolkit 触ってみた | CyberAgent
UI Toolkit で多人数開発は可能なのか?シンプルな画面遷移を作って検証してみる | Sumzap Engineering Blog
要素にスタイルを適用する
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 スクリプトリファレンス [公式]
参考:
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
プレビュー
ドキュメント:
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)
動画:
ドキュメント:
EditorTools.EditorTool | Unity スクリプトリファレンス [公式]
参考:
エディタの左上に独自の機能を追加出来る EditorTool | kan のメモ帳
Unity 2019.1 から導入された EditorTool の紹介 | Yucchiy’s Note
ツールバーにボタンを追加する
参考:
ツールバーに特定シーン再生ボタンを追加する方法 – Qiita
エディタのツールバーの部分にボタンを追加してみる | コガネブログ
Toolbar Extender – エディタ上部の再生ボタンの両サイドにボタンを配置できるエディタ拡張 | コガネブログ
シーンビューにボタンを追加する
参考:
UI Elements で Scene ビューにツールバーを追加するエディタ拡張のサンプル | コガネブログ
ゲームビューにボタンを追加する
参考:
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 上で動作させる | うにてぃブログ
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
#endif
Code 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 のメモ帳
EditorUtility.DisplayCancelableProgressBar で途中でキャンセルも出来る進捗状況の表示 | kan のメモ帳
EditorGUILayout
ドキュメント:
UnityEditor.EditorGUILayout | Unity スクリプトリファレンス [公式]
参考:
いろいろな GUI ~ EditorGUILayout 編 | ケットシーウェア
EditorGUI
ドキュメント:
UnityEditor.EditorGUI | Unity スクリプトリファレンス [公式]
コード:
Handle Utility
ドキュメント:
HandleUtility | Unity スクリプトリファレンス [公式]
参考:
Manually Update/Redraw Scene View? – Unity Discussions
Handles
動画:
ドキュメント:
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
知っておくと少し幸せになる最低限のエディタ拡張 | テラシュールブログ
エディター拡張チートシート | Unity でコードから GUI を作る (kumaS)
エディタ拡張の際によく使用する、基本的なクラスや関数まとめメモ | Bard は楽して暮らしたい
GUI / GUILayout / EditorGUI / EditorGUILayout の違い | うにてぃブログ
スクリプト集
知っておくと便利!エディタ拡張まとめ 9選 | CGメソッド
UI 制作に便利!エディタ拡張まとめ 13選 | CGメソッド
インスペクタウィンドウからメソッドを呼ぶ方法色々 | 12px.com
資料
エディター拡張マニアクス Unite 2018 (安藤圭吾) – SlideShare
Editor スクリプティング入門 (Keigo Ando) – SlideShare
知って得する エディタ拡張編 (Shota Baba) – SlideShare
教材
入手:
チュートリアル
Build Awesome Easy to Use Tools with Custom Editors!
プレイリスト
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
頂点ペイント
参考:
地形ペイント
コード:
TerrainPaintTool.cs – Unity-Technologies/UnityCsReference – GitHub