コガネブログ

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

【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 追加選択