【问题标题】:unity2d loading large worldsunity2d 加载大世界
【发布时间】:2018-03-24 10:34:17
【问题描述】:

我正在使用统一引擎来制作一个“开放世界”(我之所以松散地使用它是因为它几乎相同)MMO 自上而下的射击游戏。我创造了这个世界,我有一个非常快的系统,可以只加载你所在的世界的一部分,但是从播放按钮加载它仍然需要 5 或 6 分钟。基本上我所做的是将大量的瓷砖网格分成 8x8 的部分,然后分成 12x12 的区域。我想要一种随时加载世界的方法(例如从位图图像或其他东西),但我还希望能够在编辑器中编辑和更改世界。有谁做过这个,能帮我看看怎么办吗?

【问题讨论】:

    标签: c# unity3d 2d


    【解决方案1】:

    就在我的脑海中,我还没有在发布的产品中使用它,但是你可以将你的大场景分割成多个场景,你说你是 8x8 瓦片乘 12x12 区域。

    我建议制作一个基础场景,加载玩家在世界上的位置,根据他的位置,你加载一个场景和他周围的几个场景,当他在世界中导航或到达你确定的地方时在他看到你加载下一个场景的其他项目的范围内。这就是它的样子:

    OOOOOOOOOOOO
    OOOOOOOOOOOO
    OOOOOOOOOOOO
    OOOOOOOOOOOO
    OOOOOOOOOOOO
    OOOOOOXXOOOO
    OOOOOXXXOOOO
    OOOOOOXOOOOO
    OOOOOOOOOOOO
    OOOOOOOOOOOO
    OOOOOOOOOOOO
    OOOOOOOOOOOO
    

    每个O代表一个场景,X是加载场景。如何同时加载多个场景?如果你看一下SceneManager.LoadScene 的重载方法,有一个方法接受LoadSceneMode 传递LoadSceneMode.Additive 会将一个新场景加载到你的世界中。无需卸载前一个场景。因此,根据您的游戏强度,您可以将周围区域的内容加载给玩家,然后在后台加载它们。另一个选项是保存当前加载的场景。

    下一期,能够在编辑器中编辑和改变世界。在 Unity 编辑器中,您可以同时打开多个场景,并在这些场景中移动和重新定位每个项目。不过,可怕的是,将新游戏对象添加到特定场景中,您必须将该场景设置为活动场景。

    这里是多场景编辑文档的链接: https://docs.unity3d.com/Manual/MultiSceneEditing.html

    有关 SceneManager.LoadScene 的文档: https://docs.unity3d.com/2018.1/Documentation/ScriptReference/SceneManagement.SceneManager.LoadScene.html

    LoadSceneMode.Additive 的文档: https://docs.unity3d.com/2018.1/Documentation/ScriptReference/SceneManagement.LoadSceneMode.Additive.html

    【讨论】:

    • 感谢您的帮助!我只是想知道在生成所有图块(我有多个不同的生物群落)之后是否应该使用一些编辑器魔法将一个大场景分成一个小场景,或者我是否应该一遍又一遍地复制一个场景并将世界生成为我去。
    • 等一下,对不起,您说我可以在编辑器中打开多个场景。感谢所有的帮助,现在我可以继续我的项目了!
    • 加载这些场景会导致巨大的延迟峰值,我想分散加载它们所花费的时间。有没有办法做到这一点?
    • 是的,你是在调用 LoadScene 还是在使用 LoadSceneAsynchronous
    • 我正在使用loadsceneAsync,但我发现它在构建到我的手机时实际上不会导致延迟,它只存在于编辑器中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 2022-07-30
    • 1970-01-01
    • 2015-02-21
    相关资源
    最近更新 更多