Patching AssetBundles is as simple as downloading a new AssetBundle and replacing the existing one. If UnityWebRequestAssetBundle.GetAssetBundle is used to manage an application’s cached AssetBundles, passing a different version or hash parameter will trigger a download of the new AssetBundles.
패치 시스템에서 더 해결하기 어려운 문제는 대체할 에셋 번들을 탐지하는 것입니다. 패치 시스템은 다음 두 가지 정보 리스트를 요구합니다.
패치를 하기 위해서는 서버 측 에셋 번들 리스트를 다운로드하고 에셋 번들 리스트를 비교해야 합니다. 누락된 에셋 번들이나 버전 정보가 변경된 에셋 번들은 다시 다운로드해야 합니다.
Unity does not provide any built-in mechanism for differential patching and UnityWebRequestAssetBundle.GetAssetBundle
does not perform differential patching when using the built-in caching system. Instead it always downloads the new AssetBundle file in its entirety. If differential patching is a requirement, then a custom downloader must be written. Unity builds AssetBundles with data ordered in a deterministic manner, so a file patch for a rebuilt AssetBundle can potentially be much smaller than the full file. The uncompressed or chunk-based compression (LZ4) will patch better than the default full file compression (LZMA). Most developers who write their own system choose to use an industry-standard data format for their AssetBundle file lists, such as JSON, and a standard C# class for computing file content hashes, such as MD5. The file content hash can serve as an AssetBundle version, or you can use more traditional version numbers if those are generated by your build systems.