沙盘引擎 (SEngine)

创意诞生沙盘世界,不止如此想象!

用户工具

站点工具


侧边栏

developer:mod:scene

📚 世界空间及场景机制

沙盘引擎公共场景仅包含必要使用的,开发者将在被公开的几个场景内实现自己的逻辑。

此场景指的是Unity.Scene,也可以理解为引擎内一个“单独的空间”,完全独立的场景画布。

只有在基本需要完全隔离环境状态下(完全不同的功能界面),才会改变场景。

📒 公开场景

场景(Scene)是由《沙盘引擎》自带的一种储存介质,经过引擎开发者的框架设计,以下几种场景几乎可以适配大部分情况。

场景名称 优先级 加载方式
Native 0 引擎启动后第一个场景,此时开始加载Mod
如果是初次载入则会优先加载引擎
重载指令,也会自动跳转到此场景重新加载
World 1 主要世界场景,当引擎加载Mod完成后,此场景将作为主要的介质
无论是主菜单还是某个玩法单机\联机世界,均在此场景下实现
(主菜单相当于是一个独立的,只有菜单UI的场景世界)
MapEditor -1 地图编辑器场景,不会主动加载

📒 场景:Native

Native场景指的是《沙盘引擎》启动后第一个加载的场景,每次游戏周期只会加载一次(除非重新卸载\加载Mod)。

场景内容主要会展示《沙盘引擎》Logo以及可能开放的自定义Logo,同时在内部加载引擎可能用到的资源,以及开始加载模组相关的全部内容。

模组的加载主要包括:模组脚本、模组资源、模组配置文件等加载。

如果其中一项出现了问题,可能会导致引擎报错提示而无法进入游戏(会有UI提示错误信息)。

📒 场景:World

World场景是整个引擎中最为关键的场景,当Native场景正常加载结束后,任何与模组展示、主菜单、世界玩法相关的内容均在此场景内实现

World场景加载完成后World.jsClient.js脚本就将开始执行,World.js脚本控制着整个世界的事件和方法,并且属于服务器权威(在服务器主机运算,而不是客户端)。

同时Client.js下的客户端事件、方法也将被启用,与World.js不同的是,Client脚本下的方法都是基于客户端本地运算的,比如编写相机视角逻辑、GUI等更为合适。

注意:World场景是一个抽象又核心的概念,基于沙盘引擎World通用机制,每个场景在加载时都允许指定【地图&脚本】,任何地图都可以使用任何正确的脚本。

在引擎的Mods\XXX\Script目录下,每个目录都存放着【World&Client】两个主要入口脚本,在加载新的场景时,开发者可使用API指定要加载的【地图和脚本】,以此可实现一个脚本针对多个地图。

例如:开发者制作了一个大逃杀类型的玩法脚本,并不需要给每个地图都进行适配(制作多个脚本),只需要在加载新场景时指定【新地图+大逃杀脚本】即可兼容任何地图。

举一反三,如果开发者需要为自己的游戏制作一个主菜单(或其他非游戏核心内容),也可以参考这个逻辑,制作一个“只有UI界面和功能(或UI+世界内容搭配)”的场景即可。

📒 场景:MapEditor

MapEditor场景是一个被动加载的场景,只有开发者希望用户打开时才会出现。

此场景下可制作《沙盘引擎》几乎通用的地图文件(.semap)。

有关地图编辑器内容,请查看地图编辑器文档。

developer/mod/scene.txt · 最后更改: 2023/08/08 10:34 由 bibiboxs