Addressableエディタに関連する開発の問題

1)Addressableエディタに関連する開発の問題

2)Addressableは更新アドレスを動的に設定する

3)Addressableはネットワークが悪い環境でアセットをダウンロードする

4)Android ETC2 Fallbackに関する質問

5)内蔵Shaderの「Dependency」の定義


Addressable

Q:エディタスクリプトで以下のオプションを自動的にインポートして選択し、関連するKeyを自分で設定できるようにしたいのですが。参考プロジェクトやコードサンプルはありますか?

 

A:AssetDatabase.AssetPathToGUIDとAddressableAssetSettings.CreateOrMoveEntryを使用してください。


 

Addressable

 

Q:Addressableによって動的に配置されたホットアップデートアドレスは、ドキュメント内の静的変数(赤枠のところ)を使用します。Addressableの開始後に取得されたCatalogs.Countは常にゼロです。アドレスに問題があると思われますが、このクラスも静的である必要がありますか?

 

デッドアドレスを割り当てると、次のように更新できます。

 

この更新はテストに合格しました。最初のパッケージを生成した後、RemoteLoadPathを動的に変更したいと思います。

 

A: RemoteLoadPathはstaticのpropertyを指し、このpropertyは構成テーブルからアセット更新のアドレスを返します。

 

Addressable

 

Q:アセットのホットアップデートにはAddressableを使用しています。これで、ネット環境が悪い状況で、アセットのダウンロードステータをシミュレートします。Windowsでパケット損失をシミュレートするソフトウェアを使用してネットワーク環境がシミュレートして、パケット損失率が30%に設定されます。

 

Addressableのダウンロードは一定の割合で停止し、DownloadDependenciesAsyncのCompletedイベントはトリガーされないため、AsyncOperationHandleのstatusから失敗したか成功したかを判断することはできません。

 

Logによって報告されたエラーは次のとおりです。

 

この状況に対する良い解決策はありますか?

 

A:後で、いくつかのアセットのTime Out値の設定が大きすぎて、常に待機していることが判明したため、プログレスバーが動かなくなっていました。解決策は、Time Out値を小さく設定し、retry回数を増やすことです。

Time Outは20に設定されています。長すぎないようにしてください。長すぎると、ダウンロードの進行状況がタイムアウトしたときに長時間停止します。短すぎると、モバイルネットワークが貧弱になり、タイムアウトしてダウンロードが失敗することがよくあります。


 

Editor

Q:エミュレータでしばらく実行するとゲームがクラッシュしますが、画像がRGBA32に解凍されているため、過剰なメモリが原因だと思います。Android ETC2 Fallbackを16bitに設定して、ローエンドの実機のメモリ使用量を大幅に削減できますか?

 

また、Build SettingでETC2 Fallbackを選択した後、Project Settingに変更はありませんが、この値はどこに保存されますか?どのようにアップロードしますか? (バージョン:Unity 2018.4.31)

 

A:シミュレータには通常、十分なメモリがあります。メモリの問題が心配な場合は、シミュレータに割り当てられているメモリを調整できます。メモリの問題か、32ビットまたは64ビットのアプリケーションの問題か、または64ビットのLuaJitの問題か、Logcatに接続してLogで確認してください。この値は、Library\EditorUserBuildSettings.assetファイルにあります。


 

Shader

Q:TerrainのShaderをカスタマイズしようとしていますが、内蔵のShaderの最後に以下の二行があることがわかりました。その中の「Dependency」とは何か、そして後で指定するShaderの機能は何ですか?

 

Dependency “AddPassShader” = “Hidden/TerrainEngine/Splatmap/Diffuse-AddPass”

Dependency “BaseMapShader” = “Diffuse”

 

A:Dependencyは、シェーダーの依存関係を指定するために使用される文書化されていないキーワードであり、実の機能は2つあります。

パッケージ化時に依存関係を見逃すことはなく、AssetBundleBrowserで確認できます。

Unity 2019以降、等号の右側にあるShader名は、C#インターフェイスのShader.GetDependency(等号の左側にある依存関係の名前)から取得できます。

地形システムは、3つのライティングモデルがあるため、これを行います。GetDependency(依存関係名)は、一部のShader名のハードコーディングを減らすことができ、依存関係名はインターフェイスとして機能します。


UWA公式サイト:https://jp.uwa4d.com

UWA公式ブログ:https://blog.jp.uwa4d.com

UWA公式Q&Aコミュニティ(中国語注意):https://answer.uwa4d.com