コガネブログ

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

【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 コードの先頭に上記のコメントを追加する

【Unity】FirebaseCrashlytics The Crashlytics build ID is missing.

概要 FirebaseCrashlytics The Crashlytics build ID is missing. This occurs when the Crashlytics Gradle plugin is missing from your app's build configuration. Please review the Firebase Crashlytics onboarding instructions at https://firebase…

【Unity】Error: Burst internal compiler error: System.IO.FileNotFoundException: Could not find file "/UnityProject/Library/BurstCache/iOS-Arm/Objects/XXXX"

概要 Error: Burst internal compiler error: System.IO.FileNotFoundException: Could not find file "/UnityProject/Library/BurstCache/iOS-Arm/Objects/1adf46aae6cb8ca41f6e7951f74842d5.bc" File name: '/UnityProject/Library/BurstCache/iOS-Arm/Obj…

【Python】複数の .png の透明部分を一括でトリミングするスクリプトの例

ソースコード from PIL import Image import os # トリミングする元の画像フォルダー input_folder = "input_folder" # トリミングした画像を保存するフォルダー output_folder = "output_folder" # 元のフォルダー内の全ての.pngファイルを取得 file_list =…

【Android】画面録画の例

概要 adb shell screenrecord --bugreport /data/local/tmp/screenrecord.mp4 を実行する Ctrl + C で終了する adb pull /data/local/tmp/screenrecord.mp4 で取り出す