コガネブログ

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

【Unity】Addressables でローカルカタログを読み込む時にメインスレッドが止まらないようにする方法

検証環境 Addressables 1.16.19 概要 Addressables で管理しているグループが多いと、 ローカルカタログを読み込む処理に時間がかかるようになり、 メインスレッドが止まってしまう 重たい処理は TextDataProvider.Start 関数で File.ReadAllText を使用して…

【Unity】MessagePack for C# で LZ4 の圧縮・展開を行う方法

概要 using MessagePack; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var str = "ピカチュウ"; var lz4Options = MessagePackSerializerOptions.Standard.WithCompression( MessagePackCompression.Lz4BlockArray )…

【Unity】Unity 2021.1 新機能 - コンパイル開始時に Console のログをクリアできるオプションが追加された

概要 Unity 2021.1 から、Console の「Clear > Clear on Recompile」をオンにすると コンパイル開始時に Console のログをクリアできるようになった

【Unity】Unity 2021.1 新機能 - エディタのウィンドウのタブをダブルクリックすると最大化できる

概要 Unity 2021.1 から、エディタのウィンドウのタブをダブルクリックすると 最大化・最小化を切り替えられるようになった

【Unity】iOS において指定したパスを iCloud のバックアップの対象外にする方法

概要 using System.Diagnostics; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { SetNoBackupFlag( Application.persistentDataPath ); } [Conditional( "UNITY_IOS" )] private static void SetNoBackupFlag( string p…

【Unity】Inspector に表示するコンポーネントを選択できるようになる「Smart Inspector」紹介

はじめに 「Smart Inspector」を Unity プロジェクトに導入することで Inspector に表示するコンポーネントを選択できるようになります 使用例 このように Inspector に表示するコンポーネントを選択できます また、UnityEvent の表示がデフォルトで閉じた状…

【Unity】Curl error 7: Send failure: Software caused connection abort

概要 Curl error 7: Send failure: Software caused connection abort (Filename: ./Modules/UnityWebRequest/Implementations/TransportCurl.cpp Line: 813) Android でインターネットに接続できていない時に UnityWebRequest を実行したら上記のエラーが発…

【Unity】Addressables で Android において StreamingAssets から読み込んだアセットバンドルがキャッシュに保存されない現象に関するメモ

検証環境 Addressables 1.16.19 概要 Addressable を使用しているプロジェクトで Android ビルドして StreamingAssets からアセットバンドルを読み込んだ時に そのアセットバンドルがキャッシュに保存されない現象に遭遇した Addressable の AssetBundleProv…

【Unity】Addressables で通信環境が悪い状態でサーバからアセットバンドルのダウンロードに失敗した時に内部で例外が出ないようにする方法

検証環境 Addressables 1.16.19 概要 Exception: Attempting to use an invalid operation handle UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle.get_InternalOp () (at Runtime/ResourceManager/AsyncOperations/AsyncOperationHan…

【Unity】AndroidJavaException: java.lang.ClassNotFoundException: android.support.customtabs.CustomTabsIntent$Builder

概要 AndroidJavaException: java.lang.ClassNotFoundException: android.support.customtabs.CustomTabsIntent$Builder Android 実機で Chrome Custom Tabs を開こうとしたら 上記の例外が発生する状態に遭遇した 以下のページの次の手順を行わないようにし…

【Unity】BetterStreamingAssets: file XXXX is where Streaming Assets are put, but is compressed.

概要 BetterStreamingAssets: file XXXX is where Streaming Assets are put, but is compressed. If this is a App Bundle build, see README for a possible workaround. If this file is not a Streaming Asset (has been on purpose by hand or by anoth…

【Unity】Addressables でリモートカタログを更新する時にメインスレッドが止まらないようにする方法

検証環境 Addressables 1.16.19 概要 Addressables で管理しているグループが多いと、 Addressables.UpdateCatalogs の処理に時間がかかるようになり、 メインスレッドが止まってしまう 重たい処理は UpdateCatalogsOperation.Execute 関数なので この部分を…

【Unity】Cannot instantiate objects with a parent which is persistent. New object will be created without a parent.

概要 using UnityEngine; public class Example : MonoBehaviour { public GameObject m_prefab; private void Awake() { Instantiate ( original: m_prefab, parent: m_prefab.transform // ★ ); } } 新しいゲームオブジェクトをスクリプトから生成する時に…

【Unity】ld: framework not found AdServices

概要 ld: framework not found AdServices Unity で iOS ビルドする時に AdServices.framework を Xcode プロジェクトに追加してからビルドしたら、 上記のエラーが出てビルドに失敗する現象に遭遇した 使用している Xcode のバージョンを 12.2 から 12.4 に…

【Unity】Addressables でローカルカタログを圧縮する場合にビルドログがアプリに含まれないようにする方法

検証環境 Addressables 1.16.19 概要 Addressables でローカルカタログを圧縮する設定を有効化して アセットバンドルをビルドするようにしたところ、 「buildlogtep.json」というビルドログのファイルが アプリビルド時にアプリに含まれるようになってしまっ…

【Unity】Addressables で通信環境が悪い状態でサーバからアセットバンドルのダウンロードに失敗した時に内部で例外が出ないようにする方法

検証環境 Addressables 1.16.19 概要 Exception: Attempting to use an invalid operation handle UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle.get_InternalOp () (at Runtime/ResourceManager/AsyncOperations/AsyncOperationHan…

【Unity】Addressables の Asset Group の Inspector で Advanced Options を常に開いた状態にしたい場合

検証環境 Addressables 1.16.19 概要 Addressable Asset Group の Inspector で Advanced Options は デフォルトが閉じた状態なので、各グループの Advanced Options を見たい場合に 毎回 Advanced Options の ▶ をクリックして開く必要がある BundleAssetGr…

【Unity】Addressables で Basic 認証が設定されたサーバからリモートカタログをダウンロードする方法

検証環境 Addressables 1.16.19 概要 Addressables はデフォルトでは Basic 認証が設定されたサーバから リモートカタログをダウンロードすることができない TextDataProvider.Start 関数で UnityWebRequest を使用して リモートカタログのダウンロードが実…

【Unity】Addressables でストレージの空き容量が不足している時にリモートカタログをダウンロードしても正常に動作するように

検証環境 Addressables 1.16.19 概要 Addressables ではサーバからダウンロードしたリモートカタログを 端末のキャッシュに保存する際に、ストレージの空き容量を確認していない そのため、空き容量が不足していると File.WriteAllText で例外が発生して Con…

【Unity】Addressables の LoadScene でアセットバンドルの読み込みに失敗した時に進行不能にならないようにする方法

検証環境 Addressables 1.16.19 概要 Addressables の LoadScene でシーン遷移する時に 通信環境が悪いなどの理由でアセットバンドルの読み込みに失敗した場合、 SceneProvider で AsyncOperationBase.Complete が呼ばれなくなり それ以降 Addressables の A…

【Unity】Addressables でリモートカタログをキャッシュに保存する時にメインスレッドが止まらないようにする方法

検証環境 Addressables 1.16.19 概要 Addressables で管理しているグループが多いと、 リモートカタログをキャッシュに保存する処理に時間がかかるようになり、 メインスレッドが止まってしまう 重たい処理は ContentCatalogProvider.OnCatalogLoaded 関数で…

【Unity】Addressables のビルドを Jenkins から実行する場合にビルドに失敗しても成功扱いにならないようにする方法

検証環境 Addressables 1.16.19 概要 Jenkins から Addressables のビルドを実行する場合、 アセットバンドルのビルドに失敗しても、 Jenkins 上ではビルドに成功したことになってしまった アセットバンドルをビルドする AddressableAssetSettings.BuildPlay…

【Unity】Addressables でリモートカタログの更新が存在するか確認する時にメインスレッドが止まらないようにする方法

検証環境 Addressables 1.16.19 概要 Addressables で管理しているグループが多いと、 Addressables.CheckForCatalogUpdates の処理に時間がかかるようになり、 メインスレッドが止まってしまう 重たい処理は CheckCatalogsOperation.Execute 関数なので こ…

【Unity】Addressables でカタログの JSON を読み込む時にメインスレッドが止まらないようにする方法

検証環境 Addressables 1.16.19 概要 Addressables で管理しているグループが多いと、 カタログの JSON のサイズが大きくなり、 カタログの読み込みに時間がかかるようになり、メインスレッドが止まってしまう カタログは JSONAssetProvider クラスで JsonUt…

【Unity】Uncaught (in promise) Your browser does not support WebGL.

概要 Uncaught (in promise) Your browser does not support WebGL. Unity で WebGL ビルドしたゲームを起動したところ 真っ黒な画面のままゲームが表示されない現象に遭遇した Chrome の Console を見てみると上記のエラーが表示されていた Chrome を再起動…

【Unity】Trying to add file "XXXX" to the list of output files in the build report, but the file does not appear to exist on disk right now.

概要 Trying to add file "XXXX" to the list of output files in the build report, but the file does not appear to exist on disk right now. Unity で Android ビルドする時に上記のエラーが発生することがあった アセットバンドルを StreamingAssets …

【Unity】日本語設定の Unity エディタで Device Simulator を使おうとするとエラーが発生する問題の対策

はじめに ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, Syst…

Unity1週間ゲームジャム お題「2」で総合3位をいただきました!

概要 Unity1週間ゲームジャム お題「2」で総合3位をいただきました 評価してくださった方、ありがとうございます! ゲームはこちら https://unityroom.com/games/moveblock

【Unity】RangeError: Maximum call stack size exceeded

はじめに RangeError: Maximum call stack size exceeded Unityroom にゲームをアップロードして Chrome で動作確認していたら 上記のエラーが表示されてゲームがプレイできなくなる現象に遭遇した 対応方法 Chrome の設定画面を開いて「閲覧履歴データの削…

【Unity】アセットバンドルを暗号化しているプロジェクトで「Use incremental GC」を有効化したらときどき iOS でアプリがクラッシュ(強制終了)するようになった

概要 アセットバンドルを暗号化しているプロジェクトで 「Use incremental GC」を有効化したら、暗号化したアセットバンドルの読み込み時に ときどき iOS でアプリがクラッシュ(強制終了)するようになった Unity エディタや Android ではクラッシュしない…