1、起因

长期使用项目中自带的HelloWorldScene来创建模板工程,不知大家有木有感到厌烦?

我是个懒人,所以就弄了个新的模板工程。这样最起码可以不用每次都把HelloWorldScene删掉再创建一个Scene了,求不被鄙视...... 另外因为通常都会用cocosBuilder作为界面的编辑工具,我就将ccbi文件也加进模板项目中了。

2、内容概述

这个模板项目大致包含有:

1、主Scene变更为GameScene。其中有两个层,分别是GameLayer与HudLayer。

2、HudLayer中包含一个cocosBuilder导出的状态显示层。

3、HudLayer中包含自动更新检测与退出按钮。

有图有真相:

项目运行起来是这样的:

像素设定为1024x768。

工程目录是这样的:

3、原理

    vs项目模板是在VS2012/VC/vcprojects中。我们当然可以直接在其中做更改。不过有个更好的方式是从通过示例项目添加入手,编写一个与之对应的新模板项目。
    找到cocos2d-2.1.2/template/msvc这个文件夹。当初我们添加vs项目时运行的就是InstallWizardForVS2012.js这个脚本。我们只要复制这个过程,定位到一个新的项目中,是不是就可以了呢?说干就干。

4、动手更改

首先复制一份InstallWizardForVS2012.js。

不要运行,以编辑的方式打开这个新的副本。

找到这部分:

 // Wizard Info
var nNumWizards = 1; var astrWizardName = new Array();
astrWizardName[0] = "CCAppWiz.win32"; var nCntr;
for (nCntr = 0; nCntr < nNumWizards; nCntr++) {
var strSourceFolder = FileSys.BuildPath(strScriptPath, astrWizardName[nCntr]);
......

CCAppWiz.win32是项目名,这就是我们要找的了。所以我们还要复制一份CCAppWiz.win32。我重命名为layerWithHud.win32。项目名改了。项目内容自然也要改。把文件夹中的CCAppWiz都改掉,效果如下:

下面我们来编辑文件内容。 首先是.vsdir。

这个文件是与VS模板所对应的。我将其更改如下:

layerWithHud.win32.vsz| |LayerWithHud Application |1|Create A Application With Basic Layer and Hud.| |6777|4096|#1154

第一个字段表示所对应的.vsz文件的名字。第二个字段是模板的名字。第四个是描述。改好保存。

然后我们打开VS的项目。将自己之前调试好的类,正确的加入到项目中。这个项目是08生成的,我正好也有,就没转换项目,用vs2012打开并进行调整效果也是一样的。

接下来是Templates/1033/Templates.inf。这个文件描述了要复制到新项目的文件都有些什么:

proj.win32/res/root.ico
proj.win32/root.rc
proj.win32/resource.h proj.win32/main.h
proj.win32/main.cpp Classes/AppDelegate.h
Classes/AppDelegate.cpp [! if CC_USE_LUA]
../../../../../scripting/lua/cocos2dx_support/LuaCocos2d.cpp
../../../../../scripting/lua/cocos2dx_support/LuaCocos2d.h
../../../../../scripting/lua/cocos2dx_support/CCLuaEngine.cpp
../../../../../scripting/lua/cocos2dx_support/CCLuaEngine.h
../../../../../scripting/lua/cocos2dx_support/Cocos2dxLuaLoader.h
../../../../../scripting/lua/cocos2dx_support/Cocos2dxLuaLoader.cpp
../../../../../scripting/lua/cocos2dx_support/tolua_fix.c
../../../../../scripting/lua/cocos2dx_support/tolua_fix.h
[! else]
Classes/CCBHud.h
Classes/CCBHud.cpp
Classes/GameLayer.h
Classes/GameLayer.cpp
Classes/GameScene.h
Classes/GameScene.cpp
Classes/HudLayer.h
Classes/HudLayer.cpp
[! endif] [! if CC_USE_LUA]
Resources/Default.png
Resources/crop.png
Resources/farm.jpg
Resources/land.png
Resources/menu2.png
Resources/Icon.png
Resources/dog.png
Resources/hello.lua
Resources/hello2.lua
Resources/menu1.png
Resources/background.mp3
Resources/effect1.wav
[! else]
Resources/CloseSelected.png
Resources/CloseNormal.png
Resources/HelloWorld.png
Resources/Texture/Time_New_Roman.fnt
Resources/Texture/Time_New_Roman.png
Resources/Texture/Time_New_Roman_small.fnt
Resources/Texture/Time_New_Roman_small.png
Resources/Texture/back.png
Resources/HudHorizontal.ccbi
CCBProject_Hub.rar
[! endif]

如果定义了Lua,即:向导勾选了Lua,则进入Lua的条件语句。目前与Lua的逻辑无关。我的Class中的文件要复制过去,所以加入到其中。相应的ccbi文件与字体图片什么的也要一并写进去。每个文件都写有些麻烦,有人知道怎么添加整个文件夹,希望能告诉我。最后那个rar是cocosBuilder的项目。我打成一个rar随项目资源一起复制过去。

改了一圈最终可以改动InstallWizardForVS2012.js这个副本文件啦,我们把它重命名为InstallLayerWizardForVS2012.js 找到之前那部分,改为:

 // Wizard Info
var nNumWizards = 1; var astrWizardName = new Array();
astrWizardName[0] = "layerWithHud.win32"; var nCntr;
for (nCntr = 0; nCntr < nNumWizards; nCntr++) {
var strSourceFolder = FileSys.BuildPath(strScriptPath, astrWizardName[nCntr]);
......

还有需要更改一处:

    // Read and write additional CCAppWiz.vsdir, add path to the wizard location
try {
var strDest = FileSys.BuildPath(strDestCCFolder, "LayerWithHud.vsdir"); var ForWriting = 2; var fileDest = FileSys.OpenTextFile(strDest, ForWriting, true);
......

这个.vsdir是储存在项目模板中的文件的名称,如果不更改,会将之前HelloWorldScene模板替换掉。

5、收尾

运行刚刚改好的InstallLayerWizardForVS2012.js 弹出App Wizard successfully installed for VS2012!则说明安装正确了。如果不正确可能是目录的问题,检查一下相应的文件。

如果一切顺利,重启VS即可看到你的新项目模板了。

本篇博客出自阿修罗道,转载请注明出处:http://blog.csdn.net/fansongy/article/details/9672375

cocos2d-x创建新项目模板的更多相关文章

  1. What?VS2019创建新项目居然没有.NET Core3.0的模板?Bug?

    今天是个值得欢喜的日子,因为VS2019在今天正式发布了.作为微软粉,我已经用了一段时间的VS2019 RC版本了.但是,今天有很多小伙伴在我的<ASP.NET Core 3.0 上的gRPC服 ...

  2. Android Studio开发第二篇创建新项目

    创建新项目很简单,File-New-New Project,这个没什么好说的跟Eclipse都差不都. 第二步SDK选择,有手机平板还有Wear,TV,汽车Auto,谷歌眼镜等几个种平台,这里就先选择 ...

  3. [Xcode 实际操作]一、博主领进门-(1)iOS项目的创建和项目模板的介绍

    目录:[Swift]Xcode实际操作 本文将演示iOS项目的创建和项目模板的介绍. [Create a new Xcode project]创建一个新的项目. 在弹出的模板窗口中,显示了所有的项目模 ...

  4. Django 创建新项目后要完成的几个步骤

    首先,在过一遍创建新项目的步骤: -创建一个新项目 -建了数据库后要确定自己是用 mysql数据库  还是用 sqlite3数据库 -如果是mysql数据库,那一堆配置 -如果是sqlite3数据库, ...

  5. Worker Services的新项目模板

    .NET Core3.0创建Worker Services2019-10-24 09:05  成天  阅读(1438)  评论(20)  编辑收藏 .NET CORE 3.0新增了Worker Ser ...

  6. 使用Maven Archetype创建Java项目模板

    1.over view 简而言之,Archetype是一个Maven项目模板工具包.原型被定义为一种原始的模式或模型,所有其他同类的东西都是从中产生的.当我们试图提供一个提供生成Maven项目的一致方 ...

  7. VS自定义项目模板:[2]创建VSIX项目模板扩展

    VS自定义项目模板:[2]创建VSIX项目模板扩展 听语音 | 浏览:1237 | 更新:2015-01-02 09:21 | 标签:软件开发 1 2 3 4 5 6 7 分步阅读 一键约师傅 百度师 ...

  8. 用Kotlin开发Android应用(II):创建新项目

    这是关于Kotlin的第二篇.各位高手发现问题,请继续“拍砖”. 原文标题:Kotlin for Android(II): Create a new project 原文链接:http://anton ...

  9. cocos2d-x3.2创建新项目失败的一种可能性(cygwin自带的python2.6被抢先执行)

    之前一直使用cocos2d-x2.2写游戏,写了几个游戏后,想尝试下3.x版本的新功能,就下载了cocos2d-x3.2版本. 参照官方文档的说法,cocos2d-x3.x版本需要python2.7环 ...

随机推荐

  1. Html Meta 标签详解

    http://www.dreamdu.com/xhtml/tag_meta/

  2. 脚本两则--用于快速部署HADOOP,SPARK这些(特别是VM虚拟机模板部署出来的)。。

    感觉可能只是适合我自己的部署习惯吧,且只针对CENTOS6及以下版本,以后有时间,可能还是要改进.. 1,从VM的模块产生的虚拟机,如何快速搞定网络配置? #!/bin/bash #usage:./i ...

  3. ListView OnScrollListener详解(滑屏分页显示数据)

    package com.action; import java.util.ArrayList; import java.util.List; import android.app.Activity; ...

  4. 多线程Two-Phase Termination Pattern两阶段终止模式

    一 Two-Phase Termination Pattern Two-Phase Termination Pattern,指的就是当希望结束一个线程的时候,送出一个终止请求,但是不会马上停止,做一些 ...

  5. Mysql 主从复制,读写分离设置

    一个简单完整的 Mysql 主从复制,读写分离的示意图. 1. 首先搭建 Mysql 主从架构,实现 将 mater 数据自动复制到 slave MySQL 复制的工作方式很简单,一台服务器作为主机, ...

  6. 【HDOJ】3500 Fling

    题意巨难懂.简言之,就是球互相碰撞时,主动碰撞的球将会停止,另一个球将沿着碰撞方向继续移动,不断碰撞.但是无法弹射紧挨着的球,但是若a弹射b,bc相邻,这种情况b可以弹射c. #include < ...

  7. COJ 0581 4022农夫喂牛

    4022农夫喂牛 难度级别:D: 运行时间限制:1000ms: 运行空间限制:51200KB: 代码长度限制:2000000B 试题描述 农夫老张养了N头牛,编号分别从1到N.现在,它们要“用餐”,按 ...

  8. [GDKOI2016]小学生数学题

    记 $F(n)=\sum\limits_{i=1}^{n}i^{-1}$ $G(n)=\sum\limits_{i=1,i\neq jp}^{n}i^{-1}$ 我们要算$F(n)\%p^k$ 那么 ...

  9. [Design Pattern] Singleton Pattern 简单案例

    Singleton Pattern, 即单例模式,用于获取类的一个对象,该对象在整个应用中是其类的唯一对象.单例模式属于创建类的设计模式. SingleObject 作为单例类,内含了一个静态私有的 ...

  10. E - Minimum Cost - POJ 2516(最小费)

    题目大意:N个客户,M个供货商,K种商品,现在知道每个客户对每种商品的需求量,也知道每个供货商每种商品的持有量,和供货商把一种商品运送到每个客户的单位花费.现在想知道如果能满足所有客户的最小花费是多少 ...