コガネブログ

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

【Unity】AssemblyDefinitionAsset の References を名前順でソートする MenuItem を追加するエディタ拡張

リポジトリ 使用例 .asmdef やフォルダを選択した状態で右クリックして 「Kogane > Sort Assembly Definition References」を押すと 選択中の .asmdef や選択中のフォルダに含まれる すべての .asmdef の Assembly Definition References を 名前順でソート…

【Unity】ビルド時に Jenkins の情報を Resources フォルダのテキストファイルに書き込むエディタ拡張

リポジトリ 使用例 Project Settings で Jenkins の情報を書き込むテキストファイルの保存場所や 書き込むテキストファイルのフォーマットを設定します "C:\Program Files\Unity\Hub\Editor\2022.1.11f1\Editor\Unity.exe" ^ -quit ^ -batchmode ^ -executeM…

【Unity】ビルド時に Git の情報を Resources フォルダのテキストファイルに書き込むエディタ拡張

リポジトリ 使用例 Project Settings で Git の情報を書き込むテキストファイルの保存場所や 書き込むテキストファイルのフォーマットを設定します using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var textAsset = Reso…

【Unity】検索中は Project ウィンドウにアセットのフォルダ名を表示するエディタ拡張

リポジトリ 使用例

【Unity】Device Simulator にデバイスの情報を表示するエディタ拡張

リポジトリ 使用例

【Unity】Device Simulator の Control Panel にデバイスを変更するボタンを追加するエディタ拡張

リポジトリ 使用例

【Unity】Device Simulator にデバイスのブックマーク機能を追加するエディタ拡張

リポジトリ 使用例 「Add Bookmark」を押すと現在使用しているデバイスをブックマークできます ブックマークしたデバイスを選択すると即座にそのデバイスに切り替えられます

【Unity】マウスカーソルの場所に Tooltip を表示できるエディタ拡張

リポジトリ 使用例 using Kogane; using UnityEditor; public static class Example { [MenuItem( "Assets/Hoge" )] public static void Hoge() { TooltipWindow.Open( "ピカチュウ" ); } }

【Unity】Console ウィンドウに検索ボタンを表示するエディタ拡張

リポジトリ 使用例 Console ウィンドウで検索したいテキストを Project Settings で設定します 項目 内容 Button Text ボタンに表示するテキスト Filtering Text ボタンを押した時に検索欄に入力するテキスト未入力ならボタンを押した時に Button Text に設…

【Unity】iOS ビルド時に Xcode プロジェクトの Product Name を変更するエディタ拡張

ソースコード #if UNITY_IOS using UnityEditor; using UnityEditor.Callbacks; using UnityEditor.iOS.Xcode; internal static class Example { [PostProcessBuild] private static void OnPostProcessBuild ( BuildTarget buildTarget, string pathToBuilt…

【Unity】Inspector のコンポーネントのヘッダーにボタンを追加するエディタ拡張

リポジトリ 使用例 Remove Component Move Up / Move Down Copy Component / Paste Component Values

【Unity】EventSystem の情報をいつでも見られるようにする EditorWindow

リポジトリ 使用例 Unity メニューの「Window > Kogane > Event System Status」を選択すると EventSystem の情報をいつでも確認できるようになるため 現在どのオブジェクトをクリックしているかなどが常に確認できます

【Unity】ObjectChangeEvents を使えば Unity エディタの様々なイベントを検知できる

概要 using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { ObjectChangeEvents.changesPublished += ( ref ObjectChangeEventStream stream ) => { Debug.Log( "changesPublished" ); }; } } Objec…

【Unity】MenuItem でも Event.current を取得できる関数

ソースコード private static Event GetEventCurrent() { var fieldInfo = typeof( Event ).GetField ( name: "s_Current", bindingAttr: BindingFlags.Static | BindingFlags.NonPublic ); return ( Event )fieldInfo.GetValue( null ); } 参考サイト様

【Unity】Inspector で Color 型を右クリックした時のメニューを追加するエディタ拡張

リポジトリ 使用例

【Unity】Assembly Definition を作成する時のコンパイル回数を抑えられるエディタ拡張

リポジトリ 使い方 Project ウィンドウを右クリックして「Kogane > Create Assembly Definition」を選択して 表示されたウィンドウで Assembly Definition を作成することができます 通常の手順で Assembly Definition を作成して設定を変更する場合 Assembl…

【Unity】GUID とアセットの一覧を確認できる EditorWindow

リポジトリ 使用例 Unity メニューの「Window > Kogane > GUID List」を選択すると プロジェクトに含まれているすべてのアセットの GUID を確認できます 検索欄に GUID やアセットのパスを入力して検索することも可能です ダブルクリックすると該当のアセッ…

【Unity】エディタの選択履歴を管理できる「Editor History」紹介

はじめに 「Editor History」を Unity プロジェクトに導入することで エディタの選択履歴を管理できるようになります 使用例 エディタ右上のアイコンから選択履歴を確認できます

【Unity】CodeEditor.CurrentEditor.OpenProject を使うと指定したファイルを外部コードエディタで開ける

概要 using Unity.CodeEditor; using UnityEditor; public static class Example { [MenuItem( "Tools/Hoge" )] public static void Hoge() { CodeEditor.CurrentEditor.OpenProject ( filePath: "Assets/Example.cs", line: 11, column: 20 ); } } たとえば…

【Unity】選択中の EditorWindow のスクリーンショットを撮影するエディタ拡張

ソースコード using System; using System.IO; using UnityEditor; using UnityEngine; namespace Kogane.Internal { internal static class EditorWindowCapturer { [MenuItem( "Kogane/選択中の EditorWindow をキャプチャ" )] private static void Captur…

【Unity】Mac の Unity エディタでも Windows のようなショートカットキーで Delete・Redo・Rename できるようにするエディタ拡張

ソースコード #if UNITY_EDITOR_OSX using System.Reflection; using UnityEditor; using UnityEditor.ShortcutManagement; using UnityEngine; namespace Kogane.Internal { /// <summary> /// Windows のようにショートカットキーを使用できるようにするエディタ拡</summary>…

【Unity】ObjectField からドラッグできるようになる「DragAndDropFromField」紹介

はじめに 「DragAndDropFromField」を Unity プロジェクトに導入することで ObjectField からドラッグできるようになります 導入後

【Unity】Unity 再生時に Game ビューをフォーカスするエディタ拡張

ソースコード using System; using UnityEditor; namespace Kogane.Internal { [InitializeOnLoad] internal static class AutoFocusGameViewOnPlayModeStateChanged { private static readonly Type GAME_VIEW_TYPE; static AutoFocusGameViewOnPlayModeSta…

【Unity】Unity 2021 から削除された古いツールバーが使えるようになる「Unity-2021-with-old-toolbar」紹介

はじめに 「Unity-2021-with-old-toolbar」を Unity プロジェクトに導入することで Unity 2021 から削除された古いツールバーが使えるようになります 導入後

【Unity】Transform の Inspector のコンテキストメニューに「Copy Component」と「Paste Component Values」を表示するエディタ拡張

ソースコード using UnityEditor; using UnityEditorInternal; using UnityEngine; namespace Kogane.Internal { internal static class TransformCopyComponentPasteComponentValues { [MenuItem( "CONTEXT/Transform/Copy Component" )] public static voi…

【Unity】Unity プロジェクトのフォルダをエクスプローラで開けるようにするエディタ拡張

ソースコード using System.Diagnostics; using System.IO; using UnityEditor; namespace Kogane.Internal { internal static class ShowProjectInExplorer { #if UNITY_EDITOR_WIN [MenuItem( "File/Show Project in Explorer" )] #else [MenuItem( "File/…

【Unity】ScriptableObject を CreateAssetMenu を使わずに生成できるようにする

ソースコード using UnityEditor; using UnityEngine; namespace Kogane.Internal { [InitializeOnLoad] internal static class ScriptableObjectCreatorOnInspector { static ScriptableObjectCreatorOnInspector() { Editor.finishedDefaultHeaderGUI -= O…

【Unity】コンポーネントの名前をゲームオブジェクトに反映できるエディタ拡張

ソースコード using UnityEditor; using UnityEngine; namespace Kogane.Internal { internal static class RenameGameObjectMenuItem { [MenuItem( "CONTEXT/Component/Rename Game Object" )] private static void Rename( MenuCommand menuCommand ) { va…

【Unity】エディタ拡張で検索欄を簡単に表示する方法

概要 using UnityEditor; using UnityEditor.IMGUI.Controls; public class Example : EditorWindow { private SearchField m_searchField; private string m_text; [MenuItem( "Tools/Hoge" )] private static void Open() { GetWindow<Example>(); } private void O</example>…

【Unity】Scene Template からシーンを作成するエディタ拡張

概要 using UnityEditor; using UnityEditor.SceneTemplate; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var sceneTemplateAssetPath = "【.scenetemplate のパス】"; var scenePath = "【…