コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Unity 2019.3 で UIElements を使用してエディタの色を変更してみる

概要 上記のような「common.uss」という名前のファイルを Unity 2019.3 のプロジェクトの 「Assets/Editor/StyleSheets/Extensions」フォルダに追加することで Unity エディタのいくつかの UI の色を変更することができます 例えば common.uss で AppCommand…

【Unity】ゲームのパフォーマンスに影響を与えるソースコードやプロジェクトの設定を分析できる「Project Auditor」紹介

はじめに 「Project Auditor」を Unity プロジェクトに導入することで ゲームのパフォーマンスに影響を与えるソースコードやプロジェクトの設定を 分析できるようになります (この記事を書いた時点ではまだ実験中の機能とのことです) 使い方 Unity メニュ…

【Unity】エディタで Game ビューのキャプチャを簡単に撮ることができる「UniEditorScreenshot」紹介

はじめに 「UniEditorScreenshot」を Unity プロジェクトに導入することで エディタで Game ビューのキャプチャを簡単に撮ることができます 使い方 Unity メニューの「Window > Capture Editor」を選択します そして、表示されたウィンドウで「Take screensh…

【Unity】Gist からソースコードをダウンロードしてプロジェクトに追加できる「GistImporter.cs」紹介

ソースコード 使い方 上記のソースコードを Unity プロジェクトの「Assets/Gists」フォルダに追加して Gist の URL をクリップボードにコピーした状態で Unity メニューの「Tools > Import Gist」を押すと Gist からソースコードをダウンロードしてプロジェ…

【Unity】Xcode プロジェクトをキャッシュしてビルド時間を削減できる「UnityXcodeCache」紹介

はじめに 「UnityXcodeCache」を Unity プロジェクトに導入することで Xcode プロジェクトをキャッシュしてビルド時間を削減できようになります 使い方 「Tools > Xcode > WriteCacheXcode」を実行します Xcode プロジェクトをビルドします 「Tools > Xcode …

【Unity】.unitypackage のインポートを開始した・完了した・キャンセルされた・失敗した時に呼び出されるイベント

概要 using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { // .unitypackage のインポートを開始した AssetDatabase.importPackageStarted += packageName => { Debug.Log( packageName ); }; // .…

【Unity】Inspector で UnityEvent のリスナーの順番を変更できる「Easy Event Editor」紹介

はじめに 「Easy Event Editor」を Unity プロジェクトに導入することで Inspector で UnityEvent のリスナーの順番を変更できるようになります 使用例 適用前 適用後

【Unity】Inspector で入力欄を限界まで大きく表示できる「UnityCompactFieldAttribute」紹介

はじめに 「UnityCompactFieldAttribute」を Unity プロジェクトに導入することで Inspector で入力欄を限界まで大きく表示できるようになります 使用例 デフォルト using UnityEngine; public class Example : MonoBehaviour { public int m_id; public str…

【Unity】プロジェクトに存在するすべてのアセットの GUID を出力するエディタ拡張

概要 上記のスクリプトを Unity プロジェクトの Editor フォルダに追加して Unity メニューの「Tools > Export GUID」を押すと CSV 形式でアセットのパスと GUID を出力してクリップボードにコピーできます

【Unity】スクリプトから WebGL Template を変更する方法

概要 using UnityEditor; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var name = "Minimal"; PlayerSettings.WebGL.template = $"APPLICATION:{name}"; } } PlayerSettings.WebGL.template にテンプレートの名…

【Unity】エディタの再生ボタンの左右に独自の GUI を追加する

はじめに この記事は「Unity Advent Calendar 2019」の 12/6 の記事です 上記の「CustomToolbar」を Unity プロジェクトに導入することで エディタの再生ボタンの左右に独自の GUI を追加することができます 使用例 使い方 「CustomToolbar」を Unity プロジ…

【Unity】エディタ拡張でイベントの登録前に解除する必要があるのかどうか

はじめに using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { EditorApplication.hierarchyWindowItemOnGUI -= OnGUI; // ★ EditorApplication.hierarchyWindowItemOnGUI += OnGUI; } private sta…

【Unity】using static を使用してエディタ拡張の OnGUI の記述を少し楽にする

はじめに この記事は「Unity #3 Advent Calendar 2019」の 12/5 の記事です private void OnGUI() { EditorGUILayout.BeginHorizontal(); if ( GUILayout.Button( "ピカチュウ" ) ) { } if ( GUILayout.RepeatButton( "ライチュウ" ) ) { } EditorGUILayout.…

【Unity】mdfind や ripgrep を使用して高速にアセットの依存関係を検索できる「Find References In Project 2」紹介

はじめに 「Find References In Project 2」を Unity プロジェクトに導入することで mdfind や ripgrep を使用して高速にアセットの依存関係を検索できるようになります この記事では Windows 10 における使用方法を紹介していきます 使い方 https://github.…

【Unity】50種類以上のデバイスでゲーム画面がどう表示されるかエディタ上で確認できて、ノッチやセーフエリアの対応もできる「Universal Device Preview」紹介

はじめに この記事は「Unityアセット冬のアドベントカレンダー 2019 Winter」の 12/2 の記事です 「Universal Device Preview」を Unity プロジェクトに導入することで 50種類以上のデバイスでゲーム画面がどう表示されるかエディタ上で確認できて、 ノッチ…

【Unity】Inspector のヘッダ部分をエディタ拡張する方法

概要 using UnityEditor; [InitializeOnLoad] public static class Example { static Example() { Editor.finishedDefaultHeaderGUI += editor => { EditorGUILayout.LabelField( "フシギダネ フシギソウ フシギバナ" ); }; } } Editor.finishedDefaultHeade…

【Unity】親オブジェクトのみ座標を ( 0, 0, 0 ) にリセットするエディタ拡張

ソースコード 使い方 親オブジェクトの座標が ( 0, 0, 0 ) 以外になってしまっており 子オブジェクトの座標は今のまま変えずに 親オブジェクトのみ座標を ( 0, 0, 0 ) にしたい場合に 親オブジェクトの Transform を右クリックして 「Reset Position Only Pa…

【Unity】Shortcut Manager でキー割り当てが変更された時に呼び出されるイベント

概要 Shortcut Manager でキー割り当てが変更された時に using UnityEditor; using UnityEditor.ShortcutManagement; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { ShortcutManager.instance.shortcutBindingCh…

【Unity】Shortcut Manager のアクティブなプロファイルが変更された時に呼び出されるイベント

概要 Shortcut Manager のアクティブなプロファイルが変更された時に using UnityEditor; using UnityEditor.ShortcutManagement; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { ShortcutManager.instance.activ…

【Unity】Unity 再生時に Build Settings の先頭に登録されているシーンから開始するようにするエディタ拡張

ソースコード using UnityEditor; using UnityEditor.SceneManagement; [InitializeOnLoad] public static class Example { static Example() { // Build Settings に登録されている // シーンの一覧が変更されたら呼び出される EditorBuildSettings.sceneLi…

【Unity】Hierarchy の描画アイコンや選択可能アイコンが変更された時に呼び出されるイベント

概要 using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { SceneVisibilityManager.visibilityChanged += () => Debug.Log( "ピカチュウ" ); SceneVisibilityManager.pickingChanged += () => Debu…

【Unity】Add Component された時に呼び出されるイベント

概要 using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { ObjectFactory.componentWasAdded += com => Debug.Log( com ); } } ObjectFactory.componentWasAdded が呼び出されます

【Unity】Build Settings に登録されているシーンが変更された時に呼び出されるイベント

概要 using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { EditorBuildSettings.sceneListChanged += () => { Debug.Log( "ピカチュウ" ); }; } } EditorBuildSettings.sceneListChanged が呼び出…

【Unity】Transform の Rotation を Inspector における入力と同様に設定する方法

概要 localEulerAngles を使用する方法 using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "CONTEXT/Transform/Example" )] private static void Hoge( MenuCommand command ) { var t = command.context as Transform; t.lo…

【Unity】アセットの作成、名前の変更、移動などのタイミングで呼び出されるイベント

概要 using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { EditorApplication.projectChanged += () => Debug.Log( "ピカチュウ" ); } } EditorApplication.projectChanged が呼び出されます

【Unity】各アセンブリのコンパイルが終了した時に呼び出されるイベント

概要 using UnityEditor; using UnityEditor.Compilation; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { CompilationPipeline.assemblyCompilationFinished += ( name, messages ) => { Debug.Log( name ); }; …

【Unity】各アセンブリのコンパイルが開始された時に呼び出されるイベント

概要 using UnityEditor; using UnityEditor.Compilation; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { CompilationPipeline.assemblyCompilationStarted += name => { Debug.Log( name ); }; } } Compilation…

【Unity】UIElements で Game ビューにテキストやボタンを追加するエディタ拡張のサンプル

ソースコード using UnityEditor; using UnityEngine; using UnityEngine.UIElements; [InitializeOnLoad] public static class Example { static Example() { EditorApplication.delayCall += () => { var assembly = typeof( EditorWindow ).Assembly; var…

【Unity】Scene ビューのグリッドの表示の ON / OFF が変更された時に呼び出されるイベント

概要 Scene ビューのグリッドの表示の ON / OFF が変更された時に using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { var sceneViews = Resources.FindObjectsOfTypeAll<SceneView>(); foreach ( var sceneV</sceneview>…

【Unity】Scene ビューの描画モードを変更できないようにする方法

概要 Scene ビューの描画モードを変更できないようにする場合は using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { var sceneViews = Resources.FindObjectsOfTypeAll<SceneView>(); foreach ( var sceneVie</sceneview>…