原标题:程序丨如何解决Unity3D场景加载中出现的问题?
译者:崔嘉艺(milan21)
审校:崔国军(飞扬971)
为什么会想要和大家说说Unity3D中加载场景,主要是因为在项目的场景中经常会出现一些问题,所以在这里就想和大家分享一些加载场景的想法。
你如何对一个“关卡”进行编程?
这在游戏引擎中通常不是一个问题,但Unity需要你将每个“关卡”隔离为一个场景。并且Unity的场景有一些奇怪的设计选择(或者就是bug?) - 感觉他们引擎的场景是为玩具项目设计的,而不是为产品级别的游戏所设计。
这里有一个什么起作用、什么不起作用、以及我如何解决/在Unity内做得更好的意识流。。。这些内容没有经过仔细研究,大多是来自记忆或我自己的拍脑袋。 所以。。。这篇文章里面记录的内容可能不是全部是真的:)。
当我切换到Unreal4的时候,我将使用这样的帖子作为基准来比较Unity为什么会失败,以及多么糟糕 - 反之亦然。
更新:我添加了更多的方法和想法/评论
举个简单的例子来说:
1.加载场景的时候,游戏中的所有内容都将被销毁。
2.场景不能带参数。
3.场景不能保留状态。
4.场景不能在代码中构造或是修改。 程序化的游戏? 哈哈! 根本没有机会!
5.你不能一次编辑多个场景(这是荒谬的,给开发带来不必要地痛苦)。
6. 。。。和一堆其他问题,其中许多问题是上述问题的副作用。
更多Unity的bug使得你在处理这个问题的时候感觉像是在地狱里
1.当场景加载的时候,没有办法告诉Unity要运行什么代码。
•这是必需的,因为Unity拒绝让你传递参数。
•因为没有办法传递参数,所以你必须依赖Awake(),Start()和OnEnable()方法。
•这三种方法被定义为在对象之间以“随机”的顺序进行运行。
•如果你有一个需要被查找、加载和定位的参数,可以将其放在Awake()函数之中。
•如果需要对这个参数做全局引用,则必须在Start()函数运行期间设置它,否则不能保证它已被找到。
•任何需要使用该参数的代码都不能写在OnEnable()之外的其他方法中。
•。。。但是:很多(绝大多数?)理应在Start()方法中的代码,如果写在OnEnable()中就不能正常工作了,因为Start()和OnEnable()这两个方法做的是不同的事情!
Unity的场景加载太烦人了。
一些常见的解决方法
Unity5:增量加载
你可以加载一

最低0.47元/天 解锁文章
554

被折叠的 条评论
为什么被折叠?



