コガネブログ

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

【Unity】ProjectSettings.asset のバックアップと復元を行うクラス

リポジトリ 使用例 using System.Linq; using Kogane; using UnityEditor; using UnityEngine; public static class Example { [MenuItem( "Tools/Hoge" )] public static void Hoge() { const BuildTargetGroup buildTargetGroup = BuildTargetGroup.Standa…

【Unity】デバッグ用のシーンを Scenes In Build のリストの末尾に移動するエディタ拡張

リポジトリ 使用例 デバッグ用のシーンが格納されているフォルダのパスを Project Settings で「Path Array」に設定すると Scenes In Build にシーンを追加した時にデバッグ用のシーンが リストの末尾に自動で移動するようになります また、先頭以外のシーン…

【Unity】プレハブモードで開いているプレハブを Project ウィンドウでハイライトするエディタ拡張

リポジトリ 使用例 Project Settings で「Is Enable」をオンにすると プレハブモードで開いているプレハブが Project ウィンドウでハイライトされるようになります

【Unity】SortingLayerEditorUtility クラスの internal な機能にアクセスできる機能

リポジトリ 使用例 using System; using UnityEditor; using UnityEngine; namespace Kogane.Internal { [CustomEditor( typeof( MeshRenderer ) )] internal sealed class MeshRendererInspector : Editor { private Editor m_editor; private SerializedPr…

【Unity】ScriptableSingleton の拡張メソッド

リポジトリ 使用例 // protected な Save 関数を public で呼び出せるようにする拡張メソッド scriptableSingleton.Save( true );

【Unity】UniTask の拡張メソッド

リポジトリ 使用例 using System.Threading; using Cysharp.Threading.Tasks; using Kogane; using UnityEngine; public class Example : MonoBehaviour { private async UniTaskVoid Start() { var cancellationTokenSource = new CancellationTokenSource(…

【Unity】ドッキングされた EditorWindow で minSize が正常に動作するようにするエディタ拡張

リポジトリ 導入前 導入後

【Unity】iOS で消音モードでもオーディオを再生できるようにするクラス

リポジトリ 使用例 iOSSilentModePlayAudio.SetAudioSession(); 上記の関数を任意のタイミングで呼び出します

【Unity】MonoBehaviour のすべてのメンバーを Obsolete で使えないようにする抽象クラス

リポジトリ 使用例 using Kogane; using UnityEngine; public class Example : ObsoleteMonoBehaviour { private void Start() { Debug.Log( name ); Debug.Log( enabled ); Debug.Log( transform ); Debug.Log( GetComponent<Transform>() ); } }</transform>

【Unity】UniTask.NextFrame を GameObject 型や Component 型の拡張メソッドで呼び出せるようにするパッケージ

リポジトリ 使用例 using System.Threading; using Cysharp.Threading.Tasks; using Kogane; using UnityEngine; public class Example : MonoBehaviour { private readonly CancellationTokenSource m_cancellationTokenSource = new(); private async UniT…

【Unity】UniTask.DelaySeconds を使えるようにするパッケージ

リポジトリ 使用例 Before using System; using Cysharp.Threading.Tasks; using UnityEngine; public class Example : MonoBehaviour { private async UniTaskVoid Start() { await UniTask.Delay( TimeSpan.FromSeconds( 1 ) ); } } After using System; u…

【Unity】UniTask.WhenAll・WhenAny を拡張メソッドで呼び出せるようにするパッケージ

リポジトリ 使用例 Before using System; using System.Collections.Generic; using Cysharp.Threading.Tasks; using UnityEngine; public class Example : MonoBehaviour { private async UniTaskVoid Start() { var list = new List<UniTask>(); for ( var i = 0; i </unitask>…

【Unity】AttachExternalCancellation の引数に GameObject や Component を渡せるようにする拡張メソッド

リポジトリ 使用例 using Cysharp.Threading.Tasks; using Kogane; using UnityEngine; public sealed class Example : MonoBehaviour { private async UniTaskVoid Star() { UniTask Impl1() => UniTask.CompletedTask; UniTask<bool> Impl2() => UniTask.FromRes</bool>…

【Unity】GvhProjectSettings.xml が勝手に変更される現象を防ぐエディタ拡張

リポジトリ 使用例 ProjectSettings フォルダに 「GvhProjectSettings.xml.source」というファイルを格納することで コンパイル開始時や Unity エディタがフォーカスされた時に 「GvhProjectSettings.xml.source」を「GvhProjectSettings.xml」に上書きコピ…

【Unity】インターネットに接続しているか確認できるクラス

リポジトリ 使用例 using Cysharp.Threading.Tasks; using Kogane; using UnityEngine; public sealed class Example : MonoBehaviour { private readonly InternetCheckerInstance m_instance = new ( "8.8.8.8", // Google Public DNS "8.8.4.4", // Googl…

【Unity】UnityEngine.Ping を非同期処理で呼び出せるようにするクラス

リポジトリ 使用例 using Cysharp.Threading.Tasks; using Kogane; public static class InternetChecker { private static readonly string[] ADDRESSES = { "8.8.8.8", // Google Public DNS "8.8.4.4", // Google Public DNS "4.2.2.2", // Level 3 Commu…

【Unity】シーンの Dirty フラグが立った原因を調査できるエディタ拡張

リポジトリ 使用例 Project Settings で「Is Enable」をオンにすると シーンの Dirty フラグが立った原因が Console ウィンドウに出力されるようになります

【Unity】AudioClip の無音区間を削除できるエディタ拡張

リポジトリ 準備 本パッケージを使用するためには Python のインストールと 以下の Python パッケージのインストールが必要です pip install librosa pip install soundfile 使用例 using Kogane; using UnityEditor; public static class Example { [MenuIt…

【Unity】EventSystem.current.IsPointerOverGameObject が検出したゲームオブジェクトを取得できる StandaloneInputModule

リポジトリ 使用例 using Kogane; using UnityEngine; using UnityEngine.EventSystems; public class Example : MonoBehaviour { [SerializeField] private CustomStandaloneInputModule m_module; private void Update() { if ( EventSystem.current.IsPoi…

【Unity】ANDROID_HOME を環境変数に設定するクラス

リポジトリ 使用例 using System; using Kogane; using UnityEditor; public static class Example { [MenuItem( "Tools/Hoge" )] public static void Hoge() { SetAndroidHomeToEnvironmentVariable.Set( EnvironmentVariableTarget.Process ); } }

【Unity】アプリケーションを再起動できるパッケージ

リポジトリ 使用例 using Kogane; using UnityEngine; public sealed class Example : MonoBehaviour { private void Start() { ApplicationRestarter.Restart(); } } 対応しているプラットフォーム Unity Editor Android

【Unity】PointerEventData 型の拡張メソッド

リポジトリ 使用例 using Kogane; using UnityEngine; using UnityEngine.EventSystems; public sealed class Example : MonoBehaviour, IPointerClickHandler { void IPointerClickHandler.OnPointerClick( PointerEventData eventData ) { // シングルタッ…

【Unity】Unity 製の iOS アプリで SFSafariView を使用できるようにするパッケージ

リポジトリ 使用例 #if UNITY_IOS using Kogane; using UnityEngine; public sealed class Example : MonoBehaviour { private void Start() { SFSafariView.OpenURL( "https://www.google.co.jp/" ); } } #endif #if UNITY_IOS using Cysharp.Threading.Tas…

【Unity】iOS ビルド完了時に Xcode プロジェクトのプッシュ通知を有効化するエディタ拡張

リポジトリ 使用例 using Kogane; using UnityEditor; [InitializeOnLoad] public static class Example { static Example() { // 開発ビルドかリリースビルドか設定します SetXcodePushNotificationOnPostProcessBuild.OnIsProduction = () => false; } }

【Unity】文字列の配列やリストから最も類似している文字列を検索できる拡張子メソッド

リポジトリ 使用例 using Kogane; using UnityEngine; public sealed class Example : MonoBehaviour { private void Start() { var texts = new[] { "Awake", "Start", "Update", "FixedUpdate", "LateUpdate", }; // Update Debug.Log( texts.GetMostSimil…

【Unity】アプリケーションがバックグラウンドに移動したか、バックグラウンドから復帰したかを検知できるクラス

リポジトリ 使用例 ApplicationBackgroundChecker.OnChanged = isBackground => Debug.Log( isBackground );

【Unity】データを保存できるディレクトリのパスを管理するクラス

リポジトリ 使用例 using Kogane; using System.IO; using UnityEngine; public class Example : MonoBehaviour { private string m_text = string.Empty; private void OnGUI() { GUILayout.Label( ApplicationPath.PersistentDataPath ); GUILayout.Label(…

【Unity】アプリケーションを実行している Android 端末の API Level を取得できるパッケージ

リポジトリ 使用例 // アプリケーションを実行している Android 端末の API Level Debug.Log( AndroidApiLevel.Value ); // アプリケーションを実行している Android 端末のバージョンが 13 以上なら true Debug.Log( AndroidApiLevel.IsAndroidVersion13OrH…

【Unity】TextMesh Pro のトグルの Editor GUI を使えるようにするクラス

リポジトリ 使用例 using System; using UnityEngine; [Flags] public enum Attribute { FIRE = 1 << 1, AQUA = 1 << 2, GRASS = 1 << 3, } public sealed class Example : MonoBehaviour { [SerializeField] private Attribute m_attribute; } using Kogane…

【Unity】Android で通知許可ダイアログを表示するクラス

リポジトリ 使用例 using Cysharp.Threading.Tasks; using Kogane; using UnityEngine; public sealed class Example : MonoBehaviour { private async UniTaskVoid Start() { var result = await NotificationPermissionRequest.RequestAsync( this ); Debu…