コガネブログ

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

2023-01-01から1ヶ月間の記事一覧

【Unity】IDisposableAnalyzers を導入したらビルド時間が長くなった

概要 項目 ビルド時間 導入前 1 分 29 秒 導入後 2 分 43 秒 検証環境 Unity 2022.1.23f1 macOS Monterey バージョン 12.5.1 MacBook Pro 2021 Android Mono2x ビルド

【Unity】Caused by android.app.RemoteServiceException$CannotDeliverBroadcastException: can't deliver broadcast

概要 Caused by android.app.RemoteServiceException$CannotDeliverBroadcastException: can't deliver broadcast at android.app.ActivityThread.throwRemoteServiceException(ActivityThread.java:1979) at android.app.ActivityThread.-$$Nest$mthrowRemo…

【Unity】InitializeOnEnterPlayMode と RuntimeInitializeOnLoadMethod の実行順

実行順 InitializeOnEnterPlayMode RuntimeInitializeLoadType.SubsystemRegistration RuntimeInitializeLoadType.AfterAssembliesLoaded RuntimeInitializeLoadType.BeforeSplashScreen RuntimeInitializeLoadType.BeforeSceneLoad RuntimeInitializeLoadTy…

【Unity】Android アプリ起動時の色を変える方法

概要 Project Settings の「Player > Static Splash Image」に単色の画像を設定して 「Scaling」を「Scale to fill (cropped)」にすることで Android アプリ起動時の色を変えることができる

【Unity】Firebase Crashlytics の基本的な使い方

検証環境 Unity 2022.1.23f1 Android 13 前提条件 Firebase Console にプロジェクトを作成済みで 「google-services.json」を Assets フォルダに導入済みだと想定しています Android に Switch Platform Android に Switch Platform しておきます パッケージ…

【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】IDisposable.Dispose し忘れてる場合に Rider で警告の線を表示する方法

概要 上記のページを開いて「Download package」を押して ダウンロードした .nupkg を ZIP で展開して、展開したフォルダ内の 「analyzers\dotnet\cs\IDisposableAnalyzers.dll」を Unity プロジェクトに追加して すべてのチェックを外して「Apply」を押して…

【C#】最初に見つかった文字列だけ置換する string.Replace

ソースコード public static string ReplaceFirst ( this string self, string oldValue, string newValue ) { var startIndex = self.IndexOf( oldValue ); if ( startIndex == -1 ) return self; return self .Remove( startIndex, oldValue.Length ) .Ins…

【Unity】Unity エディタでサウンドが音割れする場合

概要 Project Settings の「Audio > DSP Buffer Size」を 「Best latency」から「Best performance」にしたら音割れしなくなった

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

【C#】Code Cracker の CC0022 は C# 8.0 以降の using 変数宣言に対応していない

C#

参考サイト様

【Unity】java.lang.IllegalArgumentException: Unknown permission: android.permission.POST_NOTIFICATIONS

概要 var tcs = new UniTaskCompletionSource<string>(); var callbacks = new PermissionCallbacks(); callbacks.PermissionGranted += _ => tcs.TrySetResult( "PermissionGranted" ); callbacks.PermissionDenied += _ => tcs.TrySetResult( "PermissionDenied" )</string>…

【Unity】UnityWebRequest で JSON を POST 通信できなかった時

概要 using System; using UnityEngine; using UnityEngine.Networking; public class Example : MonoBehaviour { [Serializable] private sealed class Data { public int id = 25; public string name = "ピカチュウ"; } private void Awake() { var url =…

【Unity】InvalidOperationException: Don't call Firebase functions before CheckDependencies has finished

概要 InvalidOperationException: Don't call Firebase functions before CheckDependencies has finished Firebase を使用しているプロジェクトで上記の例外が発生する現象に遭遇した using Firebase; using Firebase.Analytics; using UnityEngine; public…

【Unity】高速化された RectMask2D を使用できる「RectMask2DCulling」紹介

はじめに 「RectMask2DCulling」を Unity プロジェクトに導入することで 高速化された RectMask2D を使用できるようになります 使い方 「RectMask2D」の代わりに「RectMask2DCulling」を使用します

【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】IL2CPP ビルドでスタックトレースの行番号を確認する方法

概要 「Development Build」と「Script Debugging」をオンにしてビルドする オフの場合 オンの場合 参考サイト様

【Unity】Unity 2022 から Package Manager でパッケージを複数選択して削除や更新ができる

概要 Unity 2022 から Package Manager でパッケージを複数選択して 一括で「Remove」や「Update」ができる 操作 内容 Ctrl + クリック 複数選択 Ctrl + A すべて選択 Shift + クリック 範囲選択 Shift + Up / Down 追加選択

【Unity】ビルド後に書き出される AndroidManifest.xml の場所

検証環境 Unity 2022.1.23f1 Mono2x + Development Build ビルドの場合 Library\Bee\Android\Prj\Mono2x\Gradle\launcher\build\intermediates\instant_app_manifest\debug\AndroidManifest.xml IL2CPP + Development Build ビルドの場合 Library\Bee\Androi…

【Unity】Error building Player: A domain reload is pending.

概要 Error building Player: A domain reload is pending. Unity エディタで Switch Platform した直後に iOS ビルドしようとしたら 上記のエラーが発生する現象に遭遇した 一度 Unity を再生してから iOS ビルドしたら正常にビルドできた

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

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

【Unity】Clamp しない InverseLerp

概要 public static float InverseLerp( float a, float b, float value ) { return ( value - a ) / ( b - a ); }

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

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

【Unity】Unity 2023.1 新機能 - Gizmos.DrawLineList・Gizmos.DrawLineStrip が追加された

これまで using UnityEngine; public sealed class Example : MonoBehaviour { private void OnDrawGizmos() { Gizmos.DrawLine( new( 0, 0 ), new( 1, 0 ) ); Gizmos.DrawLine( new( 1, 0 ), new( 1, 1 ) ); Gizmos.DrawLine( new( 1, 1 ), new( 0, 1 ) ); …

【Unity】Unity 2023.1 新機能 - スプライトに ScriptableObject を設定できるようになった

概要 using System.Linq; using UnityEngine; public sealed class Example : MonoBehaviour { [SerializeField] private Sprite m_sprite; [SerializeField] private SpriteData m_spriteData; // ScriptableObject private void Start() { // スプライトに…

【Unity】IL2CPP ビルドのキャッシュは `Library/Bee` フォルダに保存されている

概要 BuildOptions.CleanBuildCache を使用した場合、 このフォルダ内のキャッシュが削除されてからビルドされる?

【Unity】Build Settings の「Create symbols.zip」をスクリプトから変更する方法

概要 using UnityEditor; public static class Example { [MenuItem( "Tools/Hoge" )] public static void Hoge() { EditorUserBuildSettings.androidCreateSymbols = AndroidCreateSymbols.Debugging; } }

【Unity】Firebase のアプリ ID をスクリプトから参照する方法

概要 Debug.Log( FirebaseApp.DefaultInstance.Options.AppId ); FirebaseApp クラスが持つ Options.AppId を使用する