tangzx / ABSystem

Unity3D AssetBundle 打包与管理系统
593 stars 199 forks source link

某些情况场景里的某些共用资源被重复打到场景里 #37

Open clime57 opened 6 years ago

clime57 commented 6 years ago

设立了两个场景是一样的,将它们打包后有些相同资源(如贴图)被打包到了场景里。使用TestScene脚本测试的。

代码如:

    AssetBundle ab = AssetBundle.LoadFromFile("Assets/StreamingAssets/AssetBundles/1f0a5d8e2e6bcab0b3618d54406da0db43f0a7e8.ab");
    UnityEngine.SceneManagement.SceneManager.LoadScene("1");

使用的unity2017.1p3.附件用zip格式上传始终不成功,下载下来后把png改zip

absystem-master zip

ideaspad commented 6 years ago

复制两个同样的.unity文件 为什么生成文件有问题

clime57 commented 6 years ago

经过5.6.1和2017.1的测试,发现问题的规律:unity3d的多个场景共用的预制件上直接依赖的所有的资源如果没有独立打包,将会被打到各自场景里。

比如SceneA和SceneB共用预制件PrefabA,PrefabA依赖MatA,FbxA. 如果按照之前的规则 打包,总共会生成三个AB,SceneA、SceneB和PrefabA。生成的场景包里皆会含有PrefabA,MatA(包含shader和图片),FbxA,PrefabA的AB里也会包含MatA(包含shader和图片),FbxA.

如果将MatA和FbxA单独打包,最终生成的AB包加上之前的3个共5个的情况下,则场景里不会包含MatA和FbxA的资源,PrefabA也不会包含MatA和FbxA的资源。