Cocos2d-x学习小结 配置篇
学习工具:Cocos2d-x用户手册,《Cocos2d-x游戏开发之旅》
首先官网下载cocos2d-x源码,安装vs2019。如果没有安装python2,官网下载安装python2.7.(开发工具都装完后需要重启。注销是没有用的。)
解压cocos2d-x文件夹,运行setup.py(配置cocos2d-x的环境变量)
用cocos命令cocos2d-x新建工程。cocos命令的执行文件目录为./tools/cocos2d-console/bin/cocos,命令用法是cocos new %ProjectName% -l cpp -d D:cocosProjects。为了让创建工程更简单,可以自己编一个创建工程的bat脚本。
@echo off
set /p ProjectName=请输入工程名
D:cocos2dxcocos2d-x-3.17.2 oolscocos2d-consoleincocos new %ProjectName% -l cpp -d D:cocosProjects
几十秒的等待后,可以在D:cocosProjects中找到自己的工程文件夹。大致长这样:
MycocosProject
|- cocos2d ······cocos2d引擎文件
|- classes ······本项目用到的类
|- Resources ······本项目用到的资源文件
|- proj.linux ······linux下的项目文件
|- proj.win32 ······win32下的项目文件
|- proj.android ······Android下的项目文件
|- proj.ios_mac ······ios和mac下的项目文件
删除暂时不需要的最后两项,打开MycocosProject/proj.win32中的MycocosProject.sln。
这个时候visual studio会提示你需要重定向项目(cocos2d-x的开发团队使用vs2015,我们用的是vs2019。由于新建项目的所有资源都来自于开发团队,它本身就是一个vs2015项目。为了用vs2019编辑,需要把我们创建的项目提升到vs2019版本)
之后就可以编译项目了。几分钟过后就是一个cocos2d-x的HelloWorld程序。这样我们就成功跑起来了第一个cocos2d-x程序啦!
但是,有一个(对于ssd用户来说)致命的问题,那就是开发cocos2d-x的默认方式是一个项目一个文件夹,文件夹里包括所有cocos2d-x的库文件。这就导致一个cocos2d-x项目占用差不多2Gb的硬盘空间(win7实测)!而事实上,我们可以把多个项目综合到一个大项目(也就是vs中的解决方案)中,让多个项目共用一套cocos2d-x的库,这样就可以大大节约硬盘空间。无论你创建多少个项目,硬盘空间大小也不会2Gb2Gb的增加。
具体的操作方式,就是再创建一个cocos2d-x项目,只保留classes,Resources,proj.win32三个文件夹,然后将它放到MycocosProject文件夹中。
接着,进入新创建项目的proj.win32目录,用文本编辑器打开其中的xxx.vcxproj。将文件里所有的"..cocos2d"替换成"....cocos2d"。
在这之后打开原项目MycocosProject,在解决方案上单击右键,选择【添加】-【现有项目】,选择xxx.sln,导入新的项目。
在导入项目之后,一样需要把项目重定向。右键重定向项目即可。
现在我们就成功的把新项目导入到了原来的那个大解决方案里。但是注意,以后我们打开新项目时就不能用原来的sln文件打开了。需要用大工程MycocosProject的sln文件打开,否则会提示cocos的库都被卸载了。
如果你有强迫症(像我一样),可以删除大工程MycocosProject中的classes和Resources文件夹,这样MycocosProject工程就成了其他工程的纯启动器。
在这之后,如果再要创建新的工程,直接复制粘贴xxx工程的文件夹,并把文件夹中所有含有xxx名字的文件都改成含有新项目名字的文件就可以了。
【补充概念】sln文件:在开发环境中使用的解决方案文件,是一个或多个项目(proj)的集合。它将一个或多个项目的所有元素组织到单个的解决方案中。此文件存储在父项目目录中。
附:新建工程批处理文件(新工程模板文件夹为_HelloWorld)
@echo off
setlocal enabledelayedexpansion
set /p ProjectName=请输入工程名
xcopy /y _HelloWorld %ProjectName% /s /e /I
for /r %ProjectName% %%i in (*_HelloWorld*) do (
set oldpath=%%~fi
set newpath=!oldpath:_HelloWorld=%Projectname%!
echo !oldpath!
echo !newpath!
mv !oldpath! !newpath!
)
pause
用setlocal enabledelayexpansion来让批处理器处理脚本时把复合语句分开执行,避免bat文件中对单个语句先全部计算再赋值的情况。
开启delayexpansion之后,变量不能再用%val%表示,而要用!val!表示。