zifa2003293 发表于 2022-11-11 12:44

请问答主最后再普通的设备上有没有加载时的卡顿?如何解决的?我们把场景分的粒度很低,加载的一瞬间还是会有一些掉帧的现象

kyuskoj 发表于 2022-11-11 12:46

还是会有一点CPU的峰值,不过体验上不明显,用prefab,异步加载,加上缓存,整体还好。另外我们是因为场景组件相对简单,所以chunk比较大,加载频率比较低,线上玩家是没有反馈过体验到顿卡的问题的。

量子计算9 发表于 2022-11-11 12:47

不好意思,刚刚看到。。。我们是用的一个大的navmesh来解决的。。。

IT圈老男孩1 发表于 2022-11-11 12:52

请问下每个chunk场景中的节点生成prefab的时候, 该prefab的光照信息丢失你是怎么解决的. 我是在打包的时候open每个chunk场景把 光照贴图 及 prefab 的光照信息 记录到一个二进制文件中, 运行时读出来调整光照图索引. 所以chunk中的prefab的光照图信息不能丢失.

量子计算9 发表于 2022-11-11 12:57

我们是在render所在的go上添加一个Component做记录,文章里有详细说明。hook下烘焙函数,在烘焙的时候自动从render身上更新这套记录的参数,然后运行时awake函数中赋值回给render。

NoiseFloor 发表于 2022-11-11 13:04

我也试过这个方法, 貌似chunk管理做缓存后有点问题, 应该是我的逻辑有点问题, 不过我现在的解决方案是创建prefab后就断开场景中的节点与prefab的链接, 这样就没问题, 场景中还是可以apply到prefab.
PrefabUtility.CreatePrefab(prefabPath, chunkNode, ReplacePrefabOptions.ConnectToPrefab); // 创建prefab
PrefabUtility.DisconnectPrefabInstance(chunkNode); // 断开链接

LiteralliJeff 发表于 2022-11-11 13:13

不是特别懂断开场景的节点和prefab的链接的作用。是说每个chunk的那个prefab吗?

TheLudGamer 发表于 2022-11-11 13:20

是的, 因为创建prefab后, prefab文件的光照信息已经丢失了, 不断开链接的话, 下次打开chunk场景会直接使用prefab. 断开后参数是保存在场景文件(.unity)中, 所以下次打开就不会有问题.

xiangtingsl 发表于 2022-11-11 13:23

不同navmesh间可以用OffMeshLink链接,然后分为不同场景导出,运行时用LoadSceneAsync(Additive模式)加载,OffMeshLink检测到会自动连接的,当然了,也可以导出跳跃点的坐标然后运行时创建OffMeshLink

maltadirk 发表于 2022-11-11 13:23

是不是不是mesh切割,只是拼接到一个chunk里面。再加载
页: 1 [2]
查看完整版本: Unity手游开发札记——2.5D大世界动态加载实战