Cocos Creator 源码解读:引擎启动与主循环

前言

预备

不知道你有没有想过,假如把游戏世界比作一辆汽车,那么这辆“汽车”是如何启动,又是如何持续运转的呢?

如题,本文的内容主要为 Cocos Creator 引擎的启动流程主循环

而在主循环的内容中还会涉及到:组件的生命周期和计时器、缓动系统、动画系统和物理系统等…

本文会在宏观上为大家解读主循环与各个模块之间的关系,对于各个模块也会简单介绍,但不会深入到模块的具体实现。

因为如果把每个模块都“摸”一遍,那这篇文章怕是写不完了。

Go!

希望大家看完这篇文章之后能够更加了解 Cocos Creator 引擎。

同时也希望本文可以起到“师傅领进门”的作用,大家一起加油修行鸭~

另外《源码解读》系列(应该)会持续更新,如果你想要皮皮来解读解读引擎的某个模块,也欢迎留言告诉我,我…我考虑下哈哈哈~

本文以 Cocos Creator 2.4.3 版本为参考。


正文

启动流程

index.html

对于 Web 平台 index.html 文件就是绝对的起点。

在默认的 index.html 文件中,定义了游戏启动页面的布局,加载了 main.js 文件,并且还有一段立即执行的代码。

这里截取文件中一部分比较关键的代码:

// 加载引擎脚本
loadScript(debug ? 'cocos2d-js.js' : 'cocos2d-js-min.ec334.js', function () {
    // 是否开启了物理系统?
    if (CC_PHYSICS_BUILTIN || CC_PHYSICS_CANNON) {
        // 加载物理系统脚本并启动引擎
        loadScript(debug ? 'physics.js' : 'physics-min.js', window.boot);
    } else {
        // 启动引擎
        window.boot();
    }
});

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

上面这段代码主要用于加载引擎脚本和物理系统脚本,脚本加载完成之后就会调用 main.js 中定义的 window.boot() 函数。

上一篇:当使用listIterator进行迭代时候 list的迭代器可以在创建迭代器对象后 添加数据 但打印的时候不显示添加后的数据。 collection 的iterator迭代器不能添加数据 。list的对象与collection的实例对象都不能在创建迭代器后添加数据 list的迭代器保存的是循环前的数据长度


下一篇:我的QT Creator学习笔记(三十三)——Qt中连接与使用数据库