コガネブログ

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

【Unity】BuildPlayerWindow.RegisterBuildPlayerHandler で Build や Build And Run の動作を上書きできる

目次 目次 BuildPlayerWindow.RegisterBuildPlayerHandler BuildPlayerWindow.RegisterGetBuildPlayerOptionsHandler 参考サイト様 BuildPlayerWindow.RegisterBuildPlayerHandler 例えば、上記のようにログを出力するだけの OnBuildPlayer 関数を BuildPlay…

【Unity】EditorApplication.updateMainWindowTitle でエディタのタイトルを変えられる

使用例 Unity 2022 までは internal でアクセスできなかったが、 Unity 2023 からは public でアクセスできるようになった? 参考サイト様 https://docs.unity3d.com/ja/2023.2/ScriptReference/EditorApplication-updateMainWindowTitle.html

【Unity】TMP_Text.OnFontAssetRequest を使えば font タグで Resources を使わずに済む

使用例 デフォルトだと font タグで使用するフォントアセットは Resources/Fonts & Materials/ フォルダに入れておく必要があるが、 TMP_Text.OnFontAssetRequest を使うと font タグで使用する フォントアセットを自由に設定できるため Resources を使わず…

【Unity】Application.memoryUsageChanged でメモリの使用状況を検知できる

使用例 Unity 2022.2 から使用できるようになった iOS / Android / ユニバーサル Windows プラットフォームで使用できる 参考サイト様

【Python】フォルダ内のすべてのファイルの名前から特定の文字列を正規表現で削除する例

スクリプト

【Unity】「Multi-Process AssetBundle Building」でアセットバンドルのビルドを高速化

概要 Unity 2023.1 から、アセットバンドルをマルチプロセスでビルドできる 「Multi-Process AssetBundle Building」という機能が追加された Project Settings の「Editor > Multi-Process AssetBundle Building」をオンにすることで BuildPipeline.BuildAss…

【Unity】他のシーンのゲームオブジェクトの参照を Inspector で設定する方法

概要 上記のパッケージを Unity プロジェクトに追加すると 他のシーンのゲームオブジェクトの参照を Inspector で設定できるようになります 使い方 「Scene1」と「Scene2」という 2 つのシーンが存在しており、 Scene2 のゲームオブジェクトを Scene1 で参照…

【Unity】Android ビルドで Firebase Crashlytics が正常に動作しない場合

概要 using System; using UnityEngine; public class Example : MonoBehaviour { private void Update() { throw new Exception( "ライチュウ" ); } } Firebase Crashlytics を導入している Unity プロジェクトで Android で例外が発生しても Firebase コン…

【Unity】ArgumentException: GetComponent requires that the requested component 'GameObject' derives from MonoBehaviour or Component or is an interface.

概要 using UnityEngine; public class Example : MonoBehaviour { private void Start() { var go = gameObject.GetComponent<GameObject>(); } } 上記のようなコードを実行したら ArgumentException: GetComponent requires that the requested component 'GameObject'</gameobject>…

【Unity】Crashlytics.ReportUncaughtExceptionsAsFatal で、捕捉されなかった例外を「非致命的」ではなく「クラッシュ」として扱う

概要 using System; using UnityEngine; public class Hoge : MonoBehaviour { private void Update() { throw new Exception( "ピカチュウ" ); } } Firebase の Crashlytics では通常、try ~ catch で捕捉されなかった例外は 「非致命的」として扱われるが…

【Unity】Object.InstantiateAsync で複数のオブジェクトを同時に Instantiate する

使用例 1 using Cysharp.Threading.Tasks; using UnityEngine; public class Example : MonoBehaviour { [SerializeField] private GameObject m_original; private async UniTask Start() { var operation = InstantiateAsync( m_original, 10 ); // 10 個…

【Unity】Alt + 数字キーでシーンやアセットを開けるエディタ拡張

リポジトリ 使い方 Project Settings の「Kogane > Open Asset Shortcuts」を選択して シーンやアセットを設定することで、Alt + 数字キーで開けるようになります 補足 「Shortcut Conflict」が表示された場合は 「Kogane/Open Asset Shortcuts/Open Asset X…

【Unity】ローカル座標の距離が一番近いコンポーネントを検索して返す拡張メソッド

ソースコード /// <summary> /// ローカル座標の距離が一番近いコンポーネントを検索して返します /// </summary> public static T2 FindClosestByLocalPosition<T1, T2> ( this IReadOnlyList<T2> self, T1 component, float maxDistance ) where T1 : Component where T2 : Component { T2</t2></t1,>…

【Unity】GameObject.SetGameObjectsActive で複数のゲームオブジェクトのアクティブを一括で設定する

使用例

【Unity】Vector2 の配列やリストから指定した値に一番近い要素を取得する拡張メソッド

ソースコード

【Unity】ClipboardUtility でエディタ上でのクリップボードのイベントを検知する

使用例 参考サイト様

【Unity】見下ろし型の 2D ゲームでプレイヤーが上下左右どの向きに移動したか取得する例

スクリプト

【Unity】IFilterBuildAssemblies でビルドから .dll を除外する

使用例 参考サイト様

【Unity】UnityException: XXXX is not allowed to be called during serialization, call it from Awake or Start instead. Called from MonoBehaviour 'YYYY' on game object 'ZZZZ'.

概要 UnityException: XXXX is not allowed to be called during serialization, call it from Awake or Start instead. Called from MonoBehaviour 'YYYY' on game object 'ZZZZ'. Unity エディタでコンパイルが完了した時に 上記の例外が発生する現象に遭…

【Unity】InvalidOperationException: Token version is not matched, can not await twice or get Status after await.

概要 using Cysharp.Threading.Tasks; using UnityEngine; public class Example : MonoBehaviour { private async UniTask Start() { var task = UniTask.NextFrame(); await task; await task; } } 1 つの UniTask のインスタンスを 2 回以上 await すると…

【Unity】BuildPlayerProcessor.PrepareForBuild でビルド前に StreamingAssets にファイルやフォルダを追加する

概要 BuildPlayerProcessor.PrepareForBuild を使用すると、ビルド前に以下のことができる ビルドに使用された BuildPlayerOptions を取得 StreamingAssets にファイルやフォルダを追加 参考サイト様

【Unity】InvalidOperationException: Could not execute the method because the containing type 'XXXX', is not fully instantiated.

概要 public static class Example<T> { #if UNITY_EDITOR [UnityEditor.InitializeOnEnterPlayMode] public static void InitializeOnEnterPlayMode() { } #endif } ジェネリックな static クラスで InitializeOnEnterPlayMode を使用すると InvalidOperationE</t>…

【Unity】AssemblyBuilder.Build で Assets フォルダ外のスクリプトから .dll を作成する

使用例 参考サイト様

【Unity】2022.3.20f1 だと一部の Editor Window が最大化した時にクリックしても反応しない

概要 2022.3.20f1 だと一部の Editor Window が最大化した時にクリックしても反応しない Console、Project、Android Logcat など 2022.3.16f1 だと反応する

【Unity】Firebase の Remote Config で MinimumFetchIntervalInMilliseconds を設定してもキャッシュが参照されてしまう場合

概要 Unity エディタで Enter Play Mode を有効にしている場合、 var settings = FirebaseRemoteConfig.DefaultInstance.ConfigSettings; settings.MinimumFetchIntervalInMilliseconds = 1; await FirebaseRemoteConfig.DefaultInstance.SetConfigSettingsA…

【Unity】スプライト用のガウシアンブラーシェーダ

ソースコード 参考サイト様

【Unity】エディタのタイトルバーにプロジェクトの絶対パスを表示する方法

概要 Preferences の「General > Use Project Path in Window Title」をオンにすると エディタのタイトルバーにプロジェクトの絶対パスを表示できる

【Unity】Editor.log にタイムスタンプを表示する方法

概要 Preferences の「General > Timestamp Editor log entries」をオンにすると Editor.log にタイムスタンプが表示されるようになる

【Unity】ItemNotNull と ItemCanBeNull は UniTask<> に使える

概要 [ItemNotNull] や [ItemCanBeNull] が灰色になるので使えないと思っていたが ちゃんと警告が表示された

【Unity】Rider で特定のファイルの警告をすべて無効化する方法

概要 // ReSharper disable all コードの先頭に上記のコメントを追加する