1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-03-11

1)Addressableエディタに関連する開発の問題
2)Addressableは更新アドレスを動的に設定する
3)Addressableはネットワークが悪い環境でアセットをダウンロードする
4)Android ETC2 Fallbackに関する質問
5)内蔵Shaderの「Dependency」の定義

Addressable

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

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


Addressable

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

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

4.png

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

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

Addressable

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

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

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

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

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 Technologyは、モバイル/VRなど様々なゲーム開発者向け、パフォーマンス分析最適化ソリューション及びコンサルティングサービスを提供している会社でございます。

今なら、UWA GOTローカルツールが15日間に無償試用できます!!
よければ、ぜひ!

UWA公式サイト:https://jp.uwa4d.com
UWA GOT OnlineレポートDemo:https://jp.uwa4d.com/u/got/demo.html
UWA公式ブログ:https://blog.jp.uwa4d.com

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?