概述
前面引擎的初始化流程中我们提到了 jsb-builtin.js 和 main.js 文件的加载和运行,cocos 引擎运行游戏,首先要把游戏文件加载到内存中,在 HelloWorld 工程中,游戏资源文件是放在游戏包 的res目录中的,本文就了解一下文件的加载过程。
这部分主要介绍 runtime 中 FileUtils 的实现,在 Android 原生平台,本地资源文件的加载主要靠它来实现。
文件的加载过程
main.js 加载:
1 | ├── AppDelegate::applicationDidFinishLaunching() // AppDelegate.cpp |
文件加载的实现在 FileUtilsAndroid 中:
1 | FileUtils::Status FileUtilsAndroid::getContents(const std::string& filename, ResizableBuffer* buffer) |
获取文件路径的过程:
1 | std::string FileUtils::fullPathForFilename(const std::string &filename) const |
_searchPathArray 的初始化在:
1 | bool FileUtils::init() |
我们还可以通过 FileUtils::setSearchPaths
重新设置搜索路径,或者通过 FileUtils::addSearchPath
添加搜索路径。
另外,在 Android 平台上面,_defaultResRootPath
初始化为 @assets/
。
1 |
|
比如 jsb-builtin.js 放在 assets 中,它得到的完整路径为:@assets/jsb-adapter/jsb-builtin.js
另外:在 Cocos2dxRenderer.nativeInit(this.mScreenWidth, this.mScreenHeight, mDefaultResourcePath);
中设置资源路径,但这个 mDefaultResourcePath
是空的。