コガネブログ

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

【Unity】Selection 型に関係する汎用的な関数を管理するクラス「UniSelectionUtils」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEditor; using UnityEngine; public class Example { [MenuItem("Tools/Hoge")] private static void Hoge() { // Project ビューで選択されているフォルダと、 // そのフォルダ内のすべてのサブフォルダのパス…

【Unity】EditorUtility.DisplayDialog に関する記述を短く書けるようにするクラス「UniEditorDialog」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEditor; public class Example { private static readonly EditorDialog m_editorDialog = new EditorDialog( "【ここにタイトル】" ); [MenuItem( "Tools/Hoge" )] private static void Hoge() { // OK ダイア…

【Unity】Inspector で参照を設定されている ScriptableObject の情報をインラインで表示できる「ExtendedScriptableObjectDrawer.cs」紹介

ソースコード(引用) 使用例 前述のソースコードを Unity プロジェクトに追加すると Inspector の ScriptableObject の欄に、設定されている ScriptableObject の情報がインラインで表示されるようになります ScriptableObject が設定されていない場合は「C…

【Unity】クリップボードにコピーされているパスを含むアセットを Project ビューでハイライトするエディタ拡張

概要 using UnityEditor; using UnityEngine; [InitializeOnLoad] public static class Example { static Example() { EditorApplication.projectWindowItemOnGUI += OnGUI; } private static void OnGUI( string guid, Rect selectionRect ) { var path = A…

【Unity】エディタ拡張で Inspector の最大化を切り替える方法

ソースコード using System; using UnityEditor; using UnityEngine; public sealed class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var windows = Resources.FindObjectsOfTypeAll<EditorWindow>(); var inspectorWindow = Array.Find( window</editorwindow>…

【Unity】エディタ拡張で Add Component のようなドロップダウンメニューを実装できる「AdvancedDropdown」

使用例 using System; using UnityEditor; using UnityEditor.IMGUI.Controls; using UnityEngine; class WeekdaysDropdown : AdvancedDropdown { public event Action<AdvancedDropdownItem> OnSelect; public WeekdaysDropdown( AdvancedDropdownState state ) : base( state ) {</advanceddropdownitem>…

【Unity】エディタ拡張でプロジェクト外のスクリプトをコンパイルできる「AssemblyBuilder」

ソースコード using System.IO; using System.Linq; using UnityEditor; using UnityEditor.Compilation; using UnityEngine; public static class AssembyBuilderExample { [MenuItem( "AssemblyBuilder Example/Build Assembly Async" )] public static vo…

【Unity】Unity のインストール先のフォルダを開くエディタ拡張

ソースコード using UnityEditor; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { var path = EditorApplication.applicationPath; EditorUtility.RevealInFinder( path ); } }

【Unity】AssetDatabase 型に関係する汎用的な関数を管理するクラス「UniAssetDatabaseUtils」を GitHub に公開しました

リポジトリ 使用例 通常 using System.Linq; using UnityEditor; using UnityEngine; public class Example : ScriptableObject { [MenuItem( "Tools/Hoge" )] private static void Hoge() { // Unity プロジェクトに存在する Example アセットを取得する { …

【Unity】エディタのレイアウトファイル(.wlt)の Inspector に読み込みボタンを追加するエディタ拡張「UniLayoutAssetInspector」を GitHub に公開しました

リポジトリ 使用例

【Unity】EditorPrefs に関するコードを記述しやすくするクラス「UniEditorPrefsValue」を GitHub に公開しました

リポジトリ 使用例 通常 using UnityEditor; using UnityEngine; public class Example { private const string KEY = "Hoge"; [MenuItem( "Tools/Load" )] private static void Load() { Debug.Log( EditorPrefs.GetString( KEY ) ); } [MenuItem( "Tools/S…

【Unity】特殊なフォルダを作成するメニューを追加するエディタ拡張「UniSpecialFolderCreator」を GitHub に公開しました

リポジトリ 使用例

【Unity】ビルド時に EditorUserBuildSettings.activeScriptCompilationDefines を TextAsset に書き込むエディタ拡張

ソースコード

【Unity】Project ビューでアセットのフルパスをコピーできるようにするエディタ拡張「UniAssetFullPathMultipleCopyer」を GitHub に公開しました

リポジトリ 使用例 Project ビューでアセットのフルパスをコピーできるようにするエディタ拡張 複数のアセットを選択している場合は、選択中のすべてのアセットのフルパスをコピーします

【Unity】BuildPlayerWindow の internal な機能を使用できるようにするパッケージ「UniBuildPlayerWindowInternal」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEditor; public class Example { [MenuItem( "Tools/Hoge" )] private static void Hoge() { // WebGL のモジュールをインストールする Unity Hub のページを開く var url = BuildPlayerWindowInternal.GetUnity…

【Unity】エディタがフォーカスされた、フォーカスが外れた時に呼び出されるコールバック「UniEditorFocusWatcher」を GitHub に公開しました

リポジトリ 使用例 using Kogane; using UnityEditor; using UnityEngine; [InitializeOnLoad] public class Example { static Example() { EditorFocusWatcher.OnFocused += () => Debug.Log( "フォーカスされた" ); EditorFocusWatcher.OnUnfocused += () …

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

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

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