コガネブログ

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

【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 = "【…

【Unity】パッケージを埋め込みパッケージに変更できるボタンを Inspector に表示するエディタ拡張

ソースコード using System.IO; using UnityEditor; using UnityEditor.PackageManager; using UnityEditorInternal; using UnityEngine; namespace Kogane.Internal { [InitializeOnLoad] internal static class PackageEmbedder { static PackageEmbedder(…

【Unity】Mute Audio を Unity メニューから切り替えられるエディタ拡張

ソースコード using UnityEditor; using UnityEngine; namespace Kogane.Internal { [InitializeOnLoad] internal static class MuteAudioMenuItem { private const string MENU_ITEM_NAME = "Kogane/Mute Audio"; static MuteAudioMenuItem() { EditorAppli…

【Unity】Inspector のヘッダに「Lock」「Debug」「Properties...」「Reveal In Finder」ボタンを表示するエディタ拡張

ソースコード using System.Linq; using System.Reflection; using UnityEditor; using UnityEngine; namespace Kogane.Internal { [InitializeOnLoad] internal static class InspectorHeaderGUI { static InspectorHeaderGUI() { Editor.finishedDefaultHe…

【Unity】Inspector の Add Component ボタンの下にボタンを追加してみる

概要 using System.Linq; using UnityEditor; using UnityEngine; using UnityEngine.UIElements; public static class Example { [MenuItem( "Tools/Hoge" )] public static void Hoge() { var assembly = typeof( Editor ).Assembly; var windowTypeName =…

【Unity】EditorWindow で UIElements を構築するスクリプトを書く場合は CreateGUI 関数を使用する

概要 CreateGUI is called when the EditorWindow's rootVisualElement is ready to be populated. CreateGUI 関数は EditorWindow の rootVisualElement が 操作できるようになるタイミングで呼び出される using UnityEditor; using UnityEngine.UIElements…

【Unity】UIElements で VisualElement の背面に存在する UI をクリックできるようにする

概要 var toolbar = new VisualElement { pickingMode = PickingMode.Ignore, }; pickingMode に PickingMode.Ignore を設定すると その VisualElement はクリックできないようになるため VisualElement の背面に存在する UI がクリックできるようになる

【Unity】UIElements で要素を右から左に配置したい場合

概要 using UnityEditor; using UnityEngine.UIElements; public sealed class Test : EditorWindow { [MenuItem( "Tools/Hoge" )] public static void Open() { GetWindow<Test>(); } public void CreateGUI() { var toolbar = new VisualElement(); toolbar.Add(</test>…

【Unity】UIElements で Console ウィンドウにボタンを追加するエディタ拡張のサンプル

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

【Unity】Ctrl + T で Search を開けるようにするエディタ拡張

ソースコード using UnityEditor; using UnityEditor.ShortcutManagement; using UnityEngine; namespace Kogane.Internal { internal static class SearchShortcutKey { [Shortcut( "Kogane/Open Search New Window", KeyCode.T, ShortcutModifiers.Action …

【Unity】Package Manager の Install・Remove ボタンの隣にボタンを表示するサンプル

ソースコード using System; using System.Collections.Generic; using System.IO; using System.Reflection; using UnityEditor; using UnityEditor.PackageManager.UI; using UnityEditorInternal; using UnityEngine.UIElements; using PackageInfo = Uni…

【Unity】Device Simulator に Mute Audio ボタンを追加するエディタ拡張

ソースコード using JetBrains.Annotations; using UnityEditor; using UnityEditor.DeviceSimulation; using UnityEngine.UIElements; namespace Kogane.Internal { [UsedImplicitly] internal sealed class DeviceSimulatorMuteAudioPlugin : DeviceSimula…

【Unity】EditorWindow を開いた時に TextField をフォーカスして編集状態にする方法

概要 using UnityEditor; using UnityEngine; public sealed class Example : EditorWindow { private bool m_isInitialized; private string m_name; [MenuItem( "Tools/Hoge" )] public static void Open() { GetWindow<Example>(); } private void OnGUI() { GUI.S</example>…

【Unity】スクリプトから UIElements の要素を横に並べる方法

概要 var root = new VisualElement(); root.style.flexDirection = FlexDirection.Row; VisualElement の style.flexDirection に FlexDirection.Row を指定する これだけだと要素が左に表示されてしまう var root = new VisualElement(); root.style.flexD…

【Unity】Scenes In Build が変更されたかどうかを検知する方法

ソースコード using System.Linq; using UnityEditor; using UnityEngine; internal sealed class Example : AssetPostprocessor { private const string PATH = "ProjectSettings/EditorBuildSettings.asset"; private static void OnPostprocessAllAssets …

【Unity】AspectRatioFitter の aspectRatio にスプライトのアスペクト比を設定できるようにするエディタ拡張

ソースコード using UnityEditor; using UnityEngine; using UnityEngine.UI; namespace Kogane.Internal { internal static class AspectRatioFitterMenuItem { [MenuItem( "CONTEXT/AspectRatioFitter/Set Default Aspect Ratio" )] private static void S…

【Unity】Device Simulator でデバイスが変更された時に呼び出されるイベント

ソースコード using System; using System.Linq; using System.Reflection; using UnityEditor; using UnityEditor.DeviceSimulation; using UnityEngine; namespace Kogane { [InitializeOnLoad] public static class DeviceSimulatorDeviceChecker { priva…

【Unity】Rider の Regenerate project files をメニューから実行できるようにするエディタ拡張

ソースコード using Packages.Rider.Editor; using UnityEditor; namespace Kogane.Internal { internal static class JetBrainsRiderRegenerateProjectFiles { [MenuItem( "Kogane/Rider/Regenerate project files" )] private static void SyncSolution() …

【Unity】DeviceSimulator のイベントを取得する例

ソースコード using System.Reflection; using UnityEditor; using UnityEditor.DeviceSimulation; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { // 1 フレーム遅らせないと deviceSimulatorMain が null にな…

【Unity】Unity エディタを白色にする「Clean Light Editor Theme」紹介

概要 上記のページで紹介されている .uss を Unity エディタに追加することで Unity エディタを白色にできます 検証環境 Unity 2020.3.33f1 導入手順 Unity プロジェクトに「Editor/Stylesheets/Extensions」フォルダを作成して その中に以下のファイルを作…