Unity 场景资源level0 level 及sharedassets0 sharedasset1

—Unity出包后场景中引用的贴图 材质等,一直以来我都认为是保存在Level+i及Level+i.resS文件中,今天特意做了个测试,并不是这么回事。经过测试结果如下:
①新建一个场景如下 :
Unity 场景资源level0 level 及sharedassets0 sharedasset1_第1张图片
Unity 场景资源level0 level 及sharedassets0 sharedasset1_第2张图片
②场景文件内容Unity 场景资源level0 level 及sharedassets0 sharedasset1_第3张图片
----- 如上三个图,场景文件其实就是一堆数据,它记录了场景中物体,物体上的组件.脚本等。同时他也保存了序列化的一些数据如上图中myName=zk,age=25等。引用的prefab,texture等则记录了其fileID及guid。
当我们打包出版本时,场景每个场景文件生成对应的level0 level0.res shaerdassets0.assets sharedasse0.assets.res 如下图:
Unity 场景资源level0 level 及sharedassets0 sharedasset1_第4张图片
-----1.上图中场景2为全空资源,场景1引用了一个texture和一个prefab,其中的贴图资源全部保存在sharedassets0.assets.resS中,引用的prefab的记录则保存在sharedassets0.assets中。level0 level1 并没用保存引用的资源。
----- 2.同时,我们考虑,如果两个场景中同时同一个贴图,会不会造sharedassets0.resS sharedassets1.assets.resS资源重复呢?经过我们测试,sharedassets0.asset.resS 包含这个资源后sharedassets1.assets.resS并不会再把同一个资源打包进去。
----- 3.于是,由2可知,场景2和场景1同时引用一张贴图,那么该贴图会被保存在较前被打包的场景的sharedassets.assets.resS中。于是我们做了以下测试:将初始场景设为场景2,生成exe 运行进入,我们可以看到场景2中的一张贴图。这时我们删除sharedassets0.asset.resS 重新运行exe 进入游戏后发现贴图不见了。因此验证了上面的结论。
----- 4.由上面可知,在PC环境下我们如果直接想替换某个场景,需要考虑其场景中的资源是否也被其它场景引用。

你可能感兴趣的:(Unity)