コガネブログ

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

【Unity】Preferences に簡単にメニューを追加できるエディタ拡張「UniScriptableObjectForPreferences」を GitHub に公開しました

リポジトリ 使い方 using Kogane; using UnityEditor; using UnityEngine; public class MySettings : ScriptableObjectForPreferences<MySettings> { [SerializeField] private int m_id = 25; [SerializeField] private string m_name = "ピカチュウ"; public int Id =</mysettings>…

【Unity】コンポーネントがシーンに1つだけ存在することを保証する Attribute「UniOnlyOneInSceneAttribute」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEngine; [OnlyOneInScene] public class Example : MonoBehaviour { } OnlyOneInScene 属性を適用したコンポーネントが シーンに複数存在する状態で Unity を再生しようとすると エラーログが出力されて Unity …

【Unity】Raycast Target が true なゲームオブジェクトの描画範囲を Scene ビューに表示するエディタ拡張「UniSceneViewRaycastTargetVisualizer」を GitHub に公開しました

リポジトリ 使用例 使い方 Unity の Preferences から Enabled を変更することで表示の ON / OFF を切り替えられます

【Unity】シーン保存時に RectTransform の AnchoredPosition3D や SizeDelta を整数に四捨五入するエディタ拡張「UniRectTransformAutoRounder」を GitHub に公開しました

リポジトリ 依存しているパッケージ https://github.com/baba-s/UniScriptableObjectForPreferences.git 使い方 RectTransform の AnchoredPosition3D や SizeDelta を整数に四捨五入したいゲームオブジェクトに 「RectTransformAutoRounderTarget」をアタッ…

【Unity】Project ビューで選択中のフォルダ以下のアセットが依存しているすべてのアセットのパスを取得するエディタ拡張

ソースコード using System.Linq; using UnityEditor; using UnityEngine; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var list = Selection .GetFiltered<UnityEngine.Object>( SelectionMode.Assets | SelectionMode.DeepAssets ) .Sele</unityengine.object>…

【Unity】Hierarchy にシーンファイルを Ping するボタンを追加するエディタ拡張「UniSceneAssetSelector」を GitHub に公開しました

リポジトリ 使用例

【Unity】Inspector で AnimationCurve をコピー・ペーストできるようにするエディタ拡張「UniAnimationCurveCopyPasteDrawer」を GitHub に公開しました

リポジトリ 使用例 using UnityEngine; public class Test : MonoBehaviour { public AnimationCurve m_animationCurve1; public AnimationCurve m_animationCurve2; }

【Unity】Inspector で参照が設定されていない NotNull なパラメータが存在したら Unity を再生できなくするエディタ拡張「UniNotNullChecker」を GitHub に公開しました

リポジトリ 使用例 using JetBrains.Annotations; using UnityEngine; public class Test : MonoBehaviour { [NotNull] public GameObject m_gameObject; [NotNull] public Transform m_transform; } 設定 Preferences から設定を変更できます 項目 内容 Ena…

【Unity】Missing Script が存在したら Unity を再生できなくするエディタ拡張「UniMissingScriptChecker」を GitHub に公開しました

リポジトリ 使用例 設定 Preferences から設定を変更できます 項目 内容 Enabled 有効かどうか(デフォルトは OFF) Log Format エラーログのフォーマット

【Unity】スプライトの Border をコンテキストメニューから設定できるエディタ拡張「UniSpriteBorderSetupper」を GitHub に公開しました

リポジトリ 使い方 Border を設定したいスプライトを右クリックして「UniSpriteBorderSetupper > 選択中のスプライトの Border を自動で設定」を選択すると 指定したスプライトの Border が自動で設定されます 複数のスプライトを選択してコマンドを実行する…

【Unity】EditorPrefs が保存しているすべてのキーと値を閲覧できるエディタ拡張「UniEditorPrefsWindow」を GitHub に公開しました

リポジトリ 使い方 Unity メニューの「Window > UniEditorPrefsWindow」を押すと EditorPrefs が保存しているすべてのキーと値を閲覧できます

【Unity】Unity 再生時の開始シーンを設定できるエディタ拡張「UniPlayModeStartSceneSettingWindow」を GitHub に公開しました

リポジトリ ] 使い方 Unity メニューの「Window > UniPlayModeStartSceneSettingWindow」を選択して 表示されたウィンドウの「Start Scene」にシーンファイルを設定すると Unity 再生時に必ずそのシーンから開始するようになります 「Set Current Scene」ボ…

【Unity】ゲームオブジェクトを Scene ビューに表示するかどうかを変更できる「SceneVisibilityManager」

概要 using UnityEditor; using UnityEngine; using UnityEngine.SceneManagement; public static class Example { // すべてのゲームオブジェクトを Scene ビューで非表示にします [MenuItem( "SceneVisibilityManager/HideAll" )] private static void Hid…

【Unity】別々の Animator で StateMachineBehaviour のインスタンスを共有できる「SharedBetweenAnimatorsAttribute」

概要 using UnityEngine; [SharedBetweenAnimators] public sealed class Example : StateMachineBehaviour { private int m_counter; // static ではない public override void OnStateEnter ( Animator animator, AnimatorStateInfo stateInfo, int layerI…

【Unity】エディタ拡張でファイル名に使えない文字を除外したパスを取得する方法

概要 using UnityEditor; using UnityEditorInternal; using UnityEngine; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var invalidPath = @"\ピ/カ:チ*ュ?ウ"".<t>x|t"; var path = InternalEditorUtility.RemoveInvalid</t>…

【Unity】エディタ拡張で Player.log を開く方法

概要 using UnityEditor; using UnityEditorInternal; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { InternalEditorUtility.OpenPlayerConsole(); } }

【Unity】エディタ拡張で Editor.log を開く方法

概要 using UnityEditor; using UnityEditorInternal; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { InternalEditorUtility.OpenEditorConsole(); } }

【Unity】エディタ拡張で行番号と列番号を指定して C# スクリプトを開く方法

概要 using UnityEditor; using UnityEditorInternal; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { InternalEditorUtility.OpenFileAtLineExternal ( filename: "Assets/XXXX.cs", line: 0, // 行番号 column: 0 // 列…

【Unity】エディタ拡張で Unity エディタがアクティブかどうかを確認する方法

概要 using UnityEditor; using UnityEngine; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { Debug.Log( UnityEditorInternal.InternalEditorUtility.isApplicationActive ); } }

【Unity】エディタ拡張でショートカットキーから関数を呼び出せるようにする「ClutchShortcutAttribute」

概要 using UnityEditor.ShortcutManagement; using UnityEngine; public static class Example { // F1 で呼び出されるようにする [ClutchShortcut( "Kogane/Hoge1", KeyCode.F1 )] private static void Hoge1() { Debug.Log( "ピカチュウ" ); } // Alt + F…

【Unity】エディタ拡張で Preloaded Assets に Missing が存在しないかどうか確認する方法

概要 using System.Linq; using UnityEditor; using UnityEngine; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var hasMissing = PlayerSettings .GetPreloadedAssets() .Any( x => x == null ) ; Debug.Log( hasMissi…

【Unity】Progress が実行中なら Unity を再生できなくするエディタ拡張

概要 using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { EditorApplication.playModeStateChanged += OnChanged; } private static void OnChanged( PlayModeStateChange change ) { if ( !Progr…

【Unity】エディタ拡張でショートカットキーから関数を呼び出せるようにする「ShortcutAttribute」

概要 using UnityEditor.ShortcutManagement; using UnityEngine; public static class Example { // F1 で呼び出せるようにする [Shortcut( "Kogane/Hoge1", KeyCode.F1 )] private static void Hoge1() { Debug.Log( "ピカチュウ" ); } // Alt + F1 で呼び…

【Unity】エディタ拡張で UnityEngine.Object を YAML 形式で保存・読み込みする方法

概要 using System.Linq; using UnityEditor; using UnityEditorInternal; using UnityEngine; public class Example : ScriptableObject { public int m_id = 25; public string m_name = "ピカチュウ"; [MenuItem( "Tools/Save" )] private static void Sa…

【Unity】Build Support のモジュールがインストールされているか確認するエディタ拡張

概要 using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { Debug.Log( BuildPipeline.IsBuildTargetSupported( BuildTargetGroup.iOS, BuildTarget.iOS ) ); Debug.Log( BuildPi…

【Unity】PlaybackEngine のパスを取得するエディタ拡張

概要 using UnityEditor; using UnityEngine; public static class Example { [MenuItem("Tools/Hoge")] private static void Hoge() { // C:/Program Files/Unity/Hub/Editor/2020.1.6f1/Editor/Data/PlaybackEngines/iOSSupport Debug.Log( BuildPipeline.…

【Unity】アセットを他のフォルダに移動する時に確認ダイアログを開くエディタ拡張

概要

【Unity】SceneHierarchy クラスの internal な機能にアクセスできる機能「UniSceneHierarchyInternal」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEditor; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { // Hierarchy で選択中のゲームオブジェクトのリネームモードに入る SceneHierarchyInternal.RenameGO(); } }

【Unity】シーンやプレハブから Missing Script を削除するエディタ拡張「UniMissingScriptRemover」を GitHub に公開しました

リポジトリ 使い方 Unity メニューの「Edit > UniMissingScriptRemover」から どのシーンやプレハブから Missing Script を削除するか選択することで使用できます

【Unity】Console ウィンドウの internal な機能を呼び出せるようにするクラス「UniConsoleWindowInternal」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEditor; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { // Console ウィンドウでログを検索 ConsoleWindowInternal.SetFilter( "ピカチュウ" ); } }