你是否以前为cocos方便高速开发而兴奋,你是否以前为各种工具的便利开发而感动,但如今的你是否为每次创建一个新的项目都是HelloWorldScene而苦恼?

好吧,事实上我也感觉到了,每次创建一个项目都是那个模板,太麻烦了,由于基本HelloWorldScene不删也是放在那不用的,而且还是要自己创建一些新的scene新的layer,所以,索性一点,今天我们就直接来改动这个模板,这样以后创建项目就方便了。事实上也不是有益要改动的,近期在尝试些新的东西,所以常常性的创建一个新项目,但每次刚開始改动的内容都是一样的,浪费时间和精力。好了,话不多说,開始我们的行动!

首先分析一下一个游戏的基本模块,假设要做一个游戏,或者简单一点的一个demo,我们基本会有这些场景或者层,

開始场景

游戏场景

SplashLayer或者说是刚进入游戏的logo画面

游戏结束层,计算分数,展示几个星级这些

除此之外,再来一个游戏管理的单例类,主要游戏中一些像广告啊,支付啊等等什么的全局一个就ok。

有了这些类的需求,咱们開始码一下代码了,这里我用的是3.0的版本号,2.x做法差点儿相同,打开引擎包的更文件夹,进入templates文件夹,cpp-template-default这个里面就是cpp项目的模板了,进来打开一看,

各个平台的解决方式都在这里了,咱们打开win32下的,可是一打开就会出错的,

由于缺少这些库,如今的版本号创建项目的时候都是会复制引擎库的,不再依赖原来的目录结构,所以你能够带着你的全然项目放到不论什么地方都能够,所以咱们还得加入一下这些库,找到曾经用3.0创建的项目,在里面有个cocos2d的目录,然后里面包含了这些

把它粘贴过来,再打开我们的模板项目就能够了,接下来就能够创建必要的类而且写代码了。

这是我建的几个类,

简单说明一下,Layers目录里存放各种层和场景,Sprites里面放创建的精灵,仅仅是如今里面没有,BaseLayer创建的原因是由于每次创建的层里都会用到获取屏幕的大小,所以我又封了一次,代码例如以下,

#pragma once
#include "cocos2d.h"USING_NS_CC; class BaseLayer : public Layer
{
public:BaseLayer();~BaseLayer();CREATE_FUNC(BaseLayer);virtual bool init() override;protected:Size size;};
#include "BaseLayer.h"BaseLayer::BaseLayer()
{
}BaseLayer::~BaseLayer()
{
}bool BaseLayer::init()
{if (!Layer::init())return false;size = Director::getInstance()->getWinSize();return true;
}

这样在创建的其它layer就继承BaseLayer就ok,举个GameScene的代码,

#pragma once
#include "cocos2d.h"
#include "Layers\BaseLayer.h"USING_NS_CC;class GameScene : public BaseLayer
{
public:GameScene();~GameScene();CREATE_FUNC(GameScene);virtual bool init() override;static Scene* createScene();
};
#include "GameScene.h"
#include "StartScene.h"
#include "GameManager.h"
#include "GameoverLayer.h"GameScene::GameScene()
{
}GameScene::~GameScene()
{
}Scene* GameScene::createScene()
{auto scene = Scene::create();auto layer = GameScene::create();scene->addChild(layer);return scene;
}bool GameScene::init()
{if (!BaseLayer::init())return false;return true;
}

一定要在init方法里运行一次BaseLayer的init方法,不然等于没有获取getWinSize方法。

接着改改AppDelegate这个cpp,默认创建的窗体大小是960*640的,有点大,没有填写适屏策略,程序进入后台音乐不暂停,所以我们改点代码,

#include "AppDelegate.h"
#include "SimpleAudioEngine.h"
#include "Layers\GameScene.h"
#include "Layers\StartScene.h"USING_NS_CC;
using namespace CocosDenshion;AppDelegate::AppDelegate() {}AppDelegate::~AppDelegate()
{
}bool AppDelegate::applicationDidFinishLaunching() {// initialize directorauto director = Director::getInstance();auto glview = director->getOpenGLView();if(!glview) {glview = GLView::createWithRect("My Game", Rect(0, 0, 480, 320));  //创建指定窗体大小director->setOpenGLView(glview);}director->getOpenGLView()->setDesignResolutionSize(1136, 640, ResolutionPolicy::FIXED_HEIGHT);  //适屏策略具体能够度娘// turn on display FPSdirector->setDisplayStats(0);// set FPS. the default value is 1.0/60 if you don't call thisdirector->setAnimationInterval(1.0 / 60);// create a scene. it's an autorelease object//auto scene = GameScene::createScene();auto scene = StartScene::createScene();// rundirector->runWithScene(scene);return true;
}// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground() {Director::getInstance()->stopAnimation();// if you use SimpleAudioEngine, it must be pauseSimpleAudioEngine::getInstance()->pauseBackgroundMusic();  //暂停音乐,也就是把这行凝视解除
}// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {Director::getInstance()->startAnimation();// if you use SimpleAudioEngine, it must resume hereSimpleAudioEngine::getInstance()->resumeBackgroundMusic();
}

ok,这些就是本人主要改动的地方了,假设有自己的想法也是全然能够改动的,看个人了。

关掉并保存我们对这个解决方式的改动,在proj.win32文件夹下删掉sdf和suo这两个后缀文件,而且把cpp-template-default下之前复制过来的cocos2d那个文件夹也删了,让我们的解决方式最初长得还是那样,

这样就完毕了,赶紧创建一个项目来看看,

这里我创建一个叫TestTemp的项目,解决方式就会像这样了,

大功告成,赶紧愉快的写代码吧~~~

Cocos2d-x 创建自己定义项目模板相关推荐

  1. Pr:创建自己的项目模板

    视频制作过程通常比较复杂. 最有效率的方式自然是先设计好工作流程然后再开始制作. 使用 Pr 的项目模板就可以做到这一点,不仅在创建项目上节约时间,而且能将制作流程标准化并帮助避免错误. 对于新用户, ...

  2. .NET : 在定义项目模板的时候使用占位符

    如果需要定制项目模板,那么可能需要注意这个小技巧 $safeprojectname$会被替换为用户根据该模板创建新项目时指定的名称 本文由作者:陈希章 于 2009/7/2 8:31:01 发布在:h ...

  3. VS2017 创建自定义WPF项目模板

    注意:本文主要是介绍建立WPF程序的模板,其他类型的模板并不确定以此方式创建有么有没问题 1.首先确保你的Visual Studio 已安装Visual Studio SDK 这个组件,如果安装的时候 ...

  4. 在Visual Studio 2010/2012中 找不到创建WebService的项目模板

    参考文章: http://blog.sina.com.cn/s/blog_6d545999010152wb.html 在 Visual Studio 2010 或者2012的新建 Web 应用程序或者 ...

  5. VS2017 创建安装项目模板

    参考链接: https://blog.csdn.net/Misaka2001/article/details/77870879 当你想使用VS做一道OI竞赛题目时,你的步骤是: 新建空项目 | 添加源 ...

  6. 打造自己的.NET Core项目模板

    前言 每个人都有自己习惯的项目结构,有人的喜欢在项目里面建解决方案文件夹:有的人喜欢传统的三层命名:有的人喜欢单一,简单的项目一个csproj就搞定.. 反正就是萝卜青菜,各有所爱. 可能不同的公司对 ...

  7. vs2019新建一个html项目,VS2019 自定义项目模板的实现方法

    前言: 使用"宇宙最强IDE"开发项目时,都需要根据不同情况选择一个项目模板,来满足开发需求:如下 VS为我们提供了基础的项目模板,但现有项目模板未包含基础功能如:日志输出.审计日 ...

  8. Maven自定义Archetype项目模板

    前言:在某课网上学习到可以使用命令mvn archetype:create-from-project来创建自己的项目模板(文中提及的项目模板即 原型 archetype),对此我十分感兴趣.但是,遗憾 ...

  9. 用Visual Studio2019自定义项目模板

    项目模板简介 众所周知,在我们使用VS新建项目时,都需要选择一个项目模板,如下图: 我们选择完项目模板进行创建,创建完成之后,可以发现项目中已经包含了一些基础的文件.例如MVC: 可以看到,MVC项目 ...

最新文章

  1. 一篇文章带你了解Flannel
  2. android蓝牙4.0BLE
  3. sql注入学习——时间盲注
  4. 剑指 Offer 34. 二叉树中和为某一值的路径【附完整可运行代码】
  5. 监听器第一篇【基本概念、Servlet各个监听器】
  6. 1024 许个愿吧,万一实现了呢?
  7. 大牛出招|分分钟解决 MySQL 查询速度慢与性能差
  8. DDD 领域驱动设计-三个问题思考实体和值对象(续)
  9. [算法模板]树状数组
  10. 宝马与intel合作 2021年推全自动无人驾驶车
  11. python如何制作一个工程软件_如何利用python制作一个解压缩软件-Go语言中文社区...
  12. SpringBoot学习笔记(15):动态数据源切换
  13. Atitit 面向对象  封装的实现原理
  14. 深搜和广搜--原理彼此的优缺点
  15. 操作系统镜像资源(迅雷、天翼云、百度云)
  16. 帮我写一个无数爱心滑落的html
  17. 两台电脑用网线直连传文件
  18. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java大学生就业管理系统5t101
  19. 鸿蒙系统会用于所有华为手机吗,第二款鸿蒙终端发布!搭载鸿蒙系统的华为手机还会远吗?...
  20. 用spss进行主成分分析

热门文章

  1. 13岁女孩因发布JavaScript无限循环代码被捕
  2. bzoj3545 Peaks
  3. jchdl - RTL实例 - And
  4. Unity 播放音频文件
  5. ajax跨域问题解决方案
  6. 16 级高代 II 思考题十的多种证明
  7. 让你知道什么才是firefox4的速度.
  8. 电脑总是死机 报Service Control M Hid input service 服务因下列错误而停止
  9. ​DL_WITH_PY系统学习(第3章)
  10. jQuery之validate验证表单