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:\cocos2dx\cocos2d-x-3.17.2\tools\cocos2d-console\bin\cocos 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程序啦!

Cocos2d-x学习小结 配置篇-LMLPHP

但是,有一个(对于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!表示。

参考文档

05-11 01:08