まとめ/Tips

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

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

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

見た目を整える | Unity でコードから GUI を作る (kumaS)

エディタ拡張で使用できるコールバックを40個まとめて紹介 | コガネブログ

アンドゥを実装する (Undo)

エディター拡張を使った処理にアンドゥを実装するには、処理の前後にメソッドを追加する。

  • 処理の前に、Undo.RecordObject メソッドを呼び出す。
  • 処理の後に、EditorUtility.SetDirty メソッドを呼び出す。
使用例
[CustomEditor(typeof(Example))]
public class ExampleEditor : Editor
{
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        if (GUILayout.Button("Do Something"))
        {
            Undo.RecordObject(target, "Do Something");
            // Do something here
            EditorUtility.SetDirty(target);
        }
    }
}Code language: C# (cs)

ドキュメント:

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

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

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

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

参考:

Inspector 拡張でスクリプトから変更した値がちゃんと保存されるようにする – Qiita

エディタ拡張でオブジェクトを生成した場合にシーンを保存する方法 | kan のメモ帳

エディタからシリアライズされたフィールドの値を更新する方法まとめ | LIGHT11

Unity でエディタ拡張を作るときの Undo、Redo の落とし穴 | hildsoft のコード置き場

How to Undo a lot of created objects at once? – Unity Answers

Rename Undo step after CollapseUndoOperations – Unity Forum

How to make undo work over multiple frames – Unity Forum

拡張エディタのシーンビュー操作で Ctrl + Z を有効にする – teratail

シーンビューに UI を追加する

ドキュメント:

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

参考:

Scene ビューに UI レイヤーの表示の ON/OFF を切り替えるボタンを追加するエディタ拡張 | コガネブログ

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

Unity エディタ拡張でシーンビュー上に GameObject 生成ボタン UI を作る | RYO620 DESIGN & DEVELOPMENT

設定に項目を追加する

ドキュメント:

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

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

参考:

Preferences や Project Settings に独自の項目を追加する | LIGHT11

Preference や Project Settings に メニューを追加する | うにてぃブログ

PreferenceItem is deprecated. Use SettingsProvider instead – Unity Forum

エディターで Update を実行する

ドキュメント:

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

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

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

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

起動時エディタースクリプト実行 (InitializeOnLoad) | Unity マニュアル [公式]

コード:

EditorUpdate.cs – An Editor-Side Update() Equivalent (nomnomab) – GitHub Gist

参考:

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

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

Unity Editor の Game View が更新されない時の対処方法 | 太郎Work

Editor 拡張をしたが描画が更新されない時 | Blue_Breath_Blog

How to force update in edit mode – Unity Forum

The best way to trigger Update() in Editor Mode? – Unity Answers

How do I get a callback every frame in Edit Mode – Unity Answers

Update() only in Edit Mode – Unity Answers

constant rendering update in Edit Mode? – Unity Forum

アニメーターを再生する

参考:

Editor Mode で Animator を動かす | うにてぃブログ

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

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

#idef UNITY_EDITOR
// code here only for editor
#endifCode language: C# (cs)

ドキュメント:

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

参考:

Update() only in Edit mode – Unity Answers

シーンビューを更新する

SceneView.RepaintAll()Code language: C# (cs)

ドキュメント:

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

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

参考:

Speed of HandleUtility.Repaint and SceneView.Redraw() – Unity Forum

Gizmos only update when I hover over the scene or game view – Stack Overflow

Repaint/Redraw Scene after gameObject instantiation – Stack Overflow

ウィンドウを更新する

ドキュメント:

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

ゲームビューを更新する

RepaintAllViews 関数を呼び出す。

UnityEditorInternal.InternalEditorUtility.RepaintAllViews()Code language: C# (cs)

ドキュメント:

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

参考:

Game View が更新されない時の対処方法 | 太郎Work

Refreshing the Unity3d GameView Programatically | Coderwall

How to manually update GameView? – Unity Answers

ゲームビューを開く

EditorApplication.ExecuteMenuItem("Window/General/Game");Code language: C# (cs)

参考:

How can I force the Unity Editor to the Game View – Stack Overflow

UnityExtensions

参考:

プロジェクトをまたいでエディター拡張したい – Qiita

Module Manager を使って自作ライブラリを読み込んでみた | けいごのなんとか

onSceneGUIDelegate がエラーになる

Unity 2019 以降では onSceneGUIDelegate は廃止されたため、代わりに duringSceneGui イベントを使う。

参考:

Scene ビューにちょっと便利な GUI を表示させよう – Qiita

Unity の Scene View にラベルやボタンを表示する | テラシュールブログ

Scene View 上でクリックした時などのイベントを取得する | kan のメモ帳

シーンビューにウィンドウを表示する | LIGHT11

エディタ拡張で Blender のテンキーっぽい視点移動を作ってみる | ゴマちゃんフロンティア

SceneView クラスについて | けいごのなんとか

R.A.M 2019 を Unity 2018.4 で使う場合の注意点 – Qiita

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

コメントを残す

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

Protected by reCAPTCHA