背景:
我们在一个应用中有多个小游戏(上百个),每个小游戏的资源都可能是远程动态更新和加载的。
为了提高性能和版本更新方便,我们使用了creator来开发这些小游戏,每个小游戏都是一个单独的scence+prefabs。
方案:
游戏大厅及导航使用了native进行开发,列出游戏来,用户可以在iOS 的native代码中进行注册、充值、加好友以及别的内容。当点击游戏入口进入游戏的时候,找到当前游戏的所有资源,动态生成settings.js,然后cocos2d::Application::getInstance(); 获取到游戏实例进行展示和运行。当切换游戏的时候,销毁当前cocos对象,重新启动一个。
这样的好处是,每次我需要运行游戏,都是iOS native准备好资源,然后再启动cocos 的application,从而实现了不需要每次加载所有游戏(几百个)的资源。而资源的版本管理和更新,也可以由native的resource manager来实现。
但是目前遇到一个问题:
cocos在运行态的时候是一个单例,而且根本无法进行销毁,销毁以后很多资源仍然存在。getInstance()回来的对象是空,而且无法再重新初始化。
所以:有什么办法可以完全销毁和析构掉cocos产生的对象吗?以便于我切换下一个游戏的时候,使用我准备好的资源。