Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(197评价)
价格: 4431.00元
关于真实游戏开发中多场景来回切换的问题,麻烦请游戏开发大佬解惑!
desiki发起了问答2022-04-25
4
回复
805
浏览

我虽然学了好几年unity,但却从来没真正参与过一款真正的游戏开发,所以对游戏开发中的一些标准不太了解。现在想问下关于场景切换的一些问题。

以前我的了解是,只要3D场景不同就需要切换。比如我现在在做一个3D可视化的BIM系统,首页有一个城市场景,有一个主页菜单。然后有很多很多子模块,比如停车场,办公室,机电房等等,每个子模块也有相应的UI界面。我需要频繁的通过UI界面和3D交互在这些子模块和城市场景切换。

理论上应该把这些子模块都做成一个个场景来回切换,这样有好处也有坏处。好处是每个子模块独立一个场景,烘焙灯光场景调后期效果可以很方便,因为都是独立的嘛。但是也有坏处,首先就是切换场景时城市场景写的代码资源会全部清理,虽然可以用单例,DontDestroyOnLoad来解决,但是每切换一次都需要初始化一次当前模块,频繁的切换就需要频繁的初始化,事实上初始化逻辑代码都是相同的,感觉完全重复了。其次就是切换场景时会有片刻的卡顿,这貌似是避免不了的,频繁的切换就会频繁的卡顿,这体验明显就很差。

然后我现在采用了第二种方法,就是把这些子模块和城市场景都放在一个场景中。这样也有好处和坏处。好处首先就是代码资源不用频繁的初始化,因为都在一个场景中,初始化一次就够了。其次就是不会有切换场景时的卡顿。坏处也显而易见,需要手动的关闭模块,开启模块。比如我需要从城市场景切换到停车场,我就只能手动的先关闭除停车场之外的所有场景模块,然后把停车场启用,还需要切换相机的视角,Post文件,相机的一些参数等等。这样写起来真的也很麻烦。

写的有点多,我已经尽量把自己的想法表达出来了,希望大佬能看懂。所以现在很疑惑真正游戏开发时的多场景切换是怎么处理的,有没有游戏开发大佬来解一下惑,感谢~

 

所有回复
  • 老师_Trigger 2022-04-25

    同学你好,第一个问题卡顿的话可以用异步加载优化,如果异步加载还卡顿,可以参考:

    http://blog.silucg.com/manew/article-6300.html

    第二个可以设计好框架来整理好运行逻辑就可以了,功能复杂的话一定的工作量是离不开的

    关于场景该不该分开处理与批量加载异步场景可以参考一下:

    https://www.jianshu.com/p/c5564fb86a3b

    另外可以研究一下场景加载与卸载的API,直接看官方的API文档,找场景管理类,几个场景是可以加载卸载与叠加的

    • desiki 2022-04-25

      我看了下这两篇文章,也就是说一般是用我说的第一种方法,切换多个Scene场景吗?
      卡顿问题解决了,但是还有个问题,就是每次进入子场景都会重复的初始化,这个有好的解决方案吗

      (0) 回复
    • 老师_Trigger 2022-04-26

      回复 @ desiki: 不是,看需求跟选择,很多也会用第二种,除非是场景特别大,或者需要重置状态的游戏物体,属性以及信息太多了,可能会用第一种。用上边同学说的加载场景不销毁就可以了,把需要重置的重置一下,已经重置过的就不用重置,可以用很多种去判断,比如开关,对象自己的属性值等等

      (0) 回复
    • desiki 2022-04-26

      回复 @ 老师_Trigger: 明白了,感谢

      (0) 回复
    还有-2条回复,点击查看
    你还没有登录,请先登录注册
发表回复
你还没有登录,请先 登录或 注册!