コガネブログ

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

【Unity】Unity 2020 から便利になった Preset Manager を使ってみる

はじめに Unity 2020 からは Preset や Preset Manager が便利になりました アセットの Preset の場合は、どのフォルダのアセットに どの Preset を反映するか設定できるようになった Preset の一部のパラメータのみを反映できるようになった この記事では P…

【Unity】UnitGenerator の基本的な使い方

はじめに この記事では UnitGenerator の基本的な使い方を紹介していきます 目次 はじめに 目次 検証環境 使い方 トラブルシューティング 参考サイト様 検証環境 Unity 2020.3.13f1 UnitGenerator 1.0.0 使い方 Unity プロジェクト直下に「UnitSourceGen」フ…

【Unity】CsprojModifier と BannedApiAnalyzers を使用して、特定の関数が使われていたら警告を表示線してみる

はじめに CsprojModifier と BannedApiAnalyzers を使用することで 特定の関数が使われていたら警告線を表示できるようになります 例えば、プロジェクトにおいてチームメンバーに 重たい Unity の API を使用してほしくない時などに役に立ちます この記事で…

【Unity】無料で Hierarchy を拡張できる「Smart Hierarchy for Unity」紹介

はじめに 「Smart Hierarchy for Unity」を Unity プロジェクトに導入することで 無料で Hierarchy を拡張できます 使用例 各ゲームオブジェクトのアイコンがコンポーネントのアイコンに変化します マウスカーソルを合わせているゲームオブジェクトに アクテ…

【Unity】無料で Hierarchy を拡張できる「Hierarchy 2」紹介

はじめに 「Hierarchy 2」を Unity プロジェクトに導入することで 無料で Hierarchy を拡張できます 使用例 Hierarchy にタグやレイヤー、コンポーネントの情報が表示されます タグやレイヤー、コンポーネントを右クリックすると編集できます Project Settin…

【Unity】Visual Studio Editor Package version 2.0.11 is available, we strongly encourage you to update from the Unity Package Manager for a better Visual Studio integration

概要 Visual Studio Editor Package version 2.0.11 is available, we strongly encourage you to update from the Unity Package Manager for a better Visual Studio integration Unity エディタに上記の警告が表示されるようになったら Unity メニューの…

【Unity】ArgumentException: You can only call GUI functions from inside OnGUI.

概要 using System.Threading.Tasks; using UnityEditor; using UnityEngine; public sealed class Example : EditorWindow { [MenuItem( "Tools/Hoge" )] private static void Open() { GetWindow<Example>(); } private async void OnGUI() { if ( GUILayout.Button</example>…

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

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

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