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

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

## Addressable

Q：エディタスクリプトで以下のオプションを自動的にインポートして選択し、関連するKeyを自分で設定できるようにしたいのですが。参考プロジェクトやコードサンプルはありますか？ 
![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/d7bbea49-feb3-f89b-14b0-14e6d9a6aaec.png)



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

---

## Addressable

**Q：Addressableによって動的に配置されたホットアップデートアドレスは、ドキュメント内の静的変数（赤枠のところ）を使用します。Addressableの開始後に取得されたCatalogs.Countは常にゼロです。アドレスに問題があると思われますが、このクラスも静的である必要がありますか？**
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/0fed7e81-39ee-d580-7895-3e90edc58414.png)



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

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/6dcfa034-3d13-3543-c975-7d73d6bbf5fe.png)


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

>A： RemoteLoadPathはstaticのpropertyを指し、このpropertyは構成テーブルからアセット更新のアドレスを返します。
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/06ac22b6-d1e3-7901-1eb6-b15453fef280.png)
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/a82aa478-68f3-74dc-1b0e-668c5d5ea9b7.png)


## Addressable

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

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

Logによって報告されたエラーは次のとおりです。
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/653855/f8eb7a88-d71c-a0d1-4ea4-1d0b6af1c52e.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