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里面。再加载