CocosFrameWork集成编译好的静态库,相比Cocos2d-x源码引擎来说,CocosFrameWork框架项目更小(无需拷贝整个引擎到每一个项目)、编译更快(跳过源码引擎的第一次漫长编译)。
有人说CocosFrameWork不能修改引擎源码,其实触控官网也给了自定义CocosFrameWork的解决方案,将修改过的源码cocos gen-libs -c 重新生成新的libs即可。详细教程:自定义FrameWork教程
1. 下载Cocos2d-x源码引擎(如果CocosFrameWork中自带cpp无需下载)
2. 打开CocosFrameWork的项目模板解决方案。
位置:D:\Cocos\templates\cocos2d-x-3.8\cpp-template-default\proj.win32
文件夹下的HelloWorld.sln
将其格式改为.txt (即 HelloWorld.txt)用VisualStudio打开
3. 在截图标注部分下方添加以下代码:
注:红色部分修改为源码引擎的位置,如果是CocosFrameWork修改为Cocos\frameworks\cocos2d-x-3.8
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "D:\cocos2d-x-3.8\cocos\2d\libcocos2d.vcxproj", "{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}"
EndProject
4. 修改后保存,将HelloWorld.txt改回HelloWorld.sln,以后新建的项目将自动加载cpp库,这样就能跳转查看源码
5. 由于CocosFrameWork已经引入了.h(头文件),而加入上面代码后是引入.cpp和.h,因此造成了重复载入.h的时间浪费。
优化方法:将文件D:\cocos2d-x-3.8\cocos\2d\libcocos2d.vcxproj改为txt格式,vs下打开,找到738行处 <ItemGroup>标签,里面是所有.h的引用,将此标签从头到尾删除即可。
下面是引入其他库的代码:
以文本方式打开源码引擎项目模板(templates)的HelloWorld.sln可以看到如下各种lib的引用:
Cocos2d库:
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libcocos2d", "D:\cocos2d-x-3.8\cocos\2d\libcocos2d.vcxproj", "{98A51BA8-FC3A-415B-AC8F-8C7BD464E93E}"
EndProject
box2d库:
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbox2d", "D:\cocos2d-x-3.8\external\Box2D\proj.win32\libbox2d.vcxproj", "{929480E7-23C0-4DF6-8456-096D71547116}"
EndProject
Spine库:
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libSpine", "D:\cocos2d-x-3.8\cocos\editor-support\spine\proj.win32\libSpine.vcxproj", "{B7C2A162-DEC9-4418-972E-240AB3CBFCAE}"
EndProject
Bullet:
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libbullet", "D:\cocos2d-x-3.8\external\bullet\proj.win32\libbullet.vcxproj", "{012DFF48-A13F-4F52-B07B-F8B9D21CE95B}"
EndProject
recast:
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "librecast", "D:\cocos2d-x-3.8\external\recast\proj.win32\librecast.vcxproj", "{41E34993-647E-4282-8384-4AB1AE31A452}"
EndProject