Addressableアセットのホットアップデートに関する疑問

1)Addressableアセットのホットアップデートに関する疑問

2)遠い所のメッシュ線がぼやけにならない方法

3)シェーダーでのいくつかの特別な画像の使用について

4)Lightmapがメモリに繰り返しロードされる

5)Unity2020.2.1パッケージAPKの問題


 

Addressable

Q:Addressableアセットのホットアップデートは、CRC Mismatchと提示し、ホットアップデートする必要があるアセットをCDNの対応するディレクトリにアップロードされ、ゲームの開始時にエラーが報告されます:

A:私たちのプロジェクトでも以前に同じ問題が発生しました。具体的には、パッケージがインクリメントされた後、BundleのHashが変更されていないが、CRCが変更されたため、ロードエラーが発生しました。

ここには2つの処理法があります。

1、Unityの公式によった「SchemaでCRCCheckを無効にする」方法を採用します。でもこの方法は、Bundleダウンロードの整合性と正確性を検証する際に問題が発生する可能性があります。

2、HashとCRCの二重テストをホットアップデートプロセスに追加します。いずれかの値が変わったと検出した場合、Bundleを更新する必要があると判断し、最新のCatalogファイルをリロードじます。同じく、この方法も、このバンドルのコンテンツが更新されていない場合でも、Bundleが大量に追加される可能性があります。


 

Texture

 

Q:メッシュ線の効果を出したいのですが、遠くの線がぼやけしますが、それはなぜでしょうか?これは正方形のMeshであり、UVスケーリングを使用してn個の小さなメッシュをカバーし、画像を[Repeat]に設定し、Mipmapをオフにします。しかし、遠くの線は相変わらずぼやけになります。何か解決方法はありますか?

 

A1:TextureのAniso Levelを上げてみてください。

Aniso Levelは、地面をローアングルから見るために使用されます。さらに、Filter ModeをTrilinearに設定している場合、部分的な効果がなくなりました。でもそのようにすると、コストは大分大きくなります。

 

A2:以下のように調整すると、問題は解決します。


 

Shader

Q:下図のように、他の場所からアセットをダウンロードしているため、詳しい説明はありませんが、TAの観点からこのような写真が何に使われているのか知りたいのですが。 T_M_Body_Msa_b.png、T_M_Body_Msa_g.png、T_M_Body_Msa_Mtl.pngは、それぞれどちらのシェーダーに使用されたんでしょうか?

A:それぞれb(Bump)、g(Glossness)和Mtl(Metallic)です。


 

Rendering

 

Q:次の図に示すように、Lightmap在Profileに重複に表示されるのはなぜですか?それぞれが40MBだと思いますが、それを最適化する方法はありますか?また、対応する参照スクリプトでは、Lightmapへの参照が見つかりませんでした。

A:各Lightmapが2つロードされているようです。Lightmapを管理するメカニズムを自分で作成しましたか?一度に2つロードしますか、それともシーンを切り替えたりLightmapを変更したりするときにそれらをアンインストールしませんか?シーンをロードするときにLoadSceneMode.Additiveを使用しましたか?これにより、前のアセットをアンロードせずにシーンが累加的にロードしまいます。

Lightmapへの参照数は非常に多いですね。どこのスクリプトによってインデックスされていたのか、対応するコンポーネントが常に常駐しているかどうかを確認してください。アンインストールするときは、インデックスをクリアする必要があります。

このウィンドウには、GameObjectとMonobehaviourの相互参照関係が表示されますが、直接参照ではありません。非常に複雑で、特定するのがかなり難しいです。Unityが提供する特別なMemoryProfilerで試すことができます。


 

Script

Q1:Unity 2020.2.1 + HubによってダウンロードされたSDK、NDK、JDK、およびBuildToolsが正しくパッケージ化されていません。

関連するエラーメッセージには、価値がある情報が記載されていません。

 

検証後:streammingAssetsファイルには680の制限があり、制限を超えるとパッケージ化できません。サフィックス名の有無に関係ありません。個人バッジョンには制限があるということでしょうか?

 

A1:おそらくそうではありません。何万ものファイルがテストされており、問題はありません。

 

A2:Custom Gradle properties templateを選択し、ファイル内でunityStreamingAssets = .unity3d * STREAMING_ASSETS *をunityStreamingAssets = .unity3dに変更したら済みます。

圧縮しない特別なファイルタイプが必要な場合は、コンマ “,”で区切って自分で追加してください。unityStreamingAssets = .unity3d、.bundleのようです。

U3Dは、2020.2.3以降、aaptOptionsのパッケージパラメータを変更しました。aaptOptionsの最大配列は255です。

aaptOptions 
{
    noCompress = [’.ress’, ‘.resource’, ‘.obb’] + unityStreamingAssets.tokenize(’, ')

    ignoreAssetsPattern = “!.svn:!.git:!.ds_store:!.scc:.:!CVS:!thumbs.db:!picasa.ini:!*~”
}

*PACKAGING_OPTIONS*

 

Q2:streamingAssetsを非圧縮にし、ファイルにサフィックスを付けないようにする場合、どのように記述しますか?

 

A:U3D 2020.2はunityStreamingAssets変数を使用する必要があるため、プロジェクトをエクスポートしてから、すべてのファイルが圧縮されないようにaaptOptionsを変更する必要があります。

参照:https://developer.android.google.cn/reference/tools/gradleapi/4.1/com/android/build/api/dsl/AaptOptions


 

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

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

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