Skip to content

Latest commit

 

History

History
31 lines (21 loc) · 2.53 KB

File metadata and controls

31 lines (21 loc) · 2.53 KB

Runtime 是什么

对于大部分使用Cocos2d lua/js开发游戏的开发者而言,Cocos2d-x 的 C++ 部分只是为游戏提供底层的渲染、网络等功能,开发者编写不同的脚本,用同一套 C++ 代码就能创造出完全不一样的游戏。

同时,为了让游戏能够配合 Cocos Code IDE 工作,游戏中也需要集成一些运行游戏本身不需要的功能进去,例如接收 IDE 传送文件,处理 IDE 的命令等等,所有这些源码都集中在 frameworks/runtime-src/Classes/runtime 目录下(如果你有通过 IDE 给项目添加 native 源码)。

综上所述,可以把 Runtime 理解为能够运行脚本的一个空壳程序,而空壳程序的具体表现由它所运行的脚本及资源决定。

Runtime 功能

所有 runtime 功能只有在 debug 模式下编译才会被包含进来,这是通过编译宏来控制的,所以不需要担心你的正式包会有任何多余功能。

打开调试功能

调试功能会耗费大量资源,所以正式发布的游戏肯定是不会带这个功能的,当然 Runtime 带有这个功能,但只有在与 IDE 连接调试的时候才会被打开,所以完全不用担心这个功能对 Runtime 的性能影响。

接收IDE命令

IDE 通过 socket 发送命令与 Runtime 进行协同工作,比如关闭 Runtime,获得 Runtime 版本号等等。

接收IDE传送文件

开发者修改了脚本和资源后,如果想要看 Android 或 iOS 版本的表现,只能重新打包安装,这个操作太过繁琐,有悖于于用脚本快速开发游戏的宗旨。我们给 Runtime 提供了接收文件的功能,这样 IDE 能够将最新的代码资源传送给 Runtime,不需要重新打包和安装就能使用最新的资源了。

修改游戏的资源搜索路径

上面接收的文件是存放在各个平台的 writablePath 目录下,Runtime 需要保证优先读取该目录下的资源。

代码热更新

这个功能的初衷是用户在不重启游戏的情况下,每次代码的变动都能直接更新游戏的表现,以让开发者快速地观察到修改是否正确。目前的实现仅仅是删除掉旧的脚本对象,重新创建新的脚本实例,具体的实现可参考 runtime 源代码。

1.0.2 版本开始,IDE 提供了关闭热更新的功能,以及关闭强制更新入口文件的功能,开发者可以根据自身需要在 Debug Configurations 页面设置。

其他各种小功能

修改 title,横竖屏,屏幕分辨率等等,可参考 Runtime 配置