给cocos2dx制作xcode模板

来源:互联网 发布:js小数四舍五入 编辑:程序博客网 时间:2024/06/06 01:56

http://blog.csdn.net/cocos2der/article/details/17610001


因为常用cocos2dx开发游戏,所以每次新建cpp类文件的时候,XCode默认生成的cpp类基本就是一个空文件,每次都要重复实现cocos2dx的基本代码。很麻烦。(虽然我每次都是修改了HelloWorld文件,新建的文件直接copy HelloWorld内容。感觉还是挺麻烦的。)


今天就修改了下类模板,添加了2个cocos2dx的类模板,下面是新建文件的时候,是不是多出了2个类模板。




下面我就说下怎么添加xcode类模板,很简单的。

1、打开Xcode的类模板目录地址:/Applications/Xcode.app/Contents/Developer/Library/Xcode/Templates/File Templates


2、打开里面C and C++文件,就会看到Xcode的cpp类模板文件。复制一个C++ Class.xctemplate文件夹取名:2dx Scene Class.xctemplate,放在C and C++目录下。


3、修改TemplateInfo.plist(主要修改创建文件时候的描述介绍)

打开2dx Scene Class.xctemplate/TemplateInfo.plist,   修改Description的值为:A C++ class for Cocos2d-x Scene.


4、修改___FILEBASENAME___.h

打开2dx Scene Class.xctemplate/___FILEBASENAME___.h,修改成以下内容:

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. //  
  2. //  ___FILENAME___  
  3. //  ___PROJECTNAME___  
  4. //  
  5. //  Created by ___FULLUSERNAME___ on ___DATE___.  
  6. //___COPYRIGHT___  
  7. //  
  8.   
  9. #ifndef _____PROJECTNAMEASIDENTIFIER________FILEBASENAMEASIDENTIFIER_____  
  10. #define _____PROJECTNAMEASIDENTIFIER________FILEBASENAMEASIDENTIFIER_____  
  11.   
  12. #include "cocos2d.h"  
  13. USING_NS_CC;  
  14.   
  15. class ___FILEBASENAMEASIDENTIFIER___ : public Layer  
  16. {  
  17. public:  
  18.     ___FILEBASENAMEASIDENTIFIER___();  
  19.     ~___FILEBASENAMEASIDENTIFIER___();  
  20.     static Scene* createScene();  
  21.     virtual bool init();  
  22.     CREATE_FUNC(___FILEBASENAMEASIDENTIFIER___);  
  23.       
  24. private:  
  25.     void initData();  
  26. };  
  27.   
  28. #endif /* defined(_____PROJECTNAMEASIDENTIFIER________FILEBASENAMEASIDENTIFIER_____) */  


5、修改___FILEBASENAME___.cpp

打开2dx Scene Class.xctemplate/___FILEBASENAME___.cpp,修改成以下内容:

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. //  
  2. //  ___FILENAME___  
  3. //  ___PROJECTNAME___  
  4. //  
  5. //  Created by ___FULLUSERNAME___ on ___DATE___.  
  6. //___COPYRIGHT___  
  7. //  
  8.   
  9. #include "___FILEBASENAME___.h"  
  10. ___FILEBASENAMEASIDENTIFIER___::___FILEBASENAMEASIDENTIFIER___()  
  11. {  
  12.       
  13. }  
  14.   
  15. ___FILEBASENAMEASIDENTIFIER___::~___FILEBASENAMEASIDENTIFIER___()  
  16. {  
  17.       
  18. }  
  19.   
  20. Scene* ___FILEBASENAMEASIDENTIFIER___::createScene()  
  21. {  
  22.     auto scene = Scene::create();  
  23.     auto layer = ___FILEBASENAMEASIDENTIFIER___::create();  
  24.     scene->addChild(layer);  
  25.     return scene;  
  26. }  
  27.   
  28. bool ___FILEBASENAMEASIDENTIFIER___::init()  
  29. {  
  30.     if ( !Layer::init() )  
  31.     {  
  32.         return false;  
  33.     }  
  34.     initData();  
  35.     return true;  
  36. }  
  37.   
  38. #pragma mark - initData  
  39. void ___FILEBASENAMEASIDENTIFIER___::initData()  
  40. {  
  41.     Size visibleSize = Director::getInstance()->getVisibleSize();  
  42.       
  43.     // add your codes here...  
  44.       
  45. }  


ok, 这样就完成了一个类模板的添加。


现在在XCode里面新建一个2dx Scene类看看。是不是已经有默认内容了。

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. //  
  2. //  MyScene.h  
  3. //  MagicDemo  
  4. //  
  5. //  Created by LiuYanghui on 13-12-27.  
  6. //  
  7. //  
  8.   
  9. #ifndef __MagicDemo__MyScene__  
  10. #define __MagicDemo__MyScene__  
  11.   
  12. #include "cocos2d.h"  
  13. USING_NS_CC;  
  14.   
  15. class MyScene : public Layer  
  16. {  
  17. public:  
  18.     MyScene();  
  19.     ~MyScene();  
  20.     static Scene* createScene();  
  21.     virtual bool init();  
  22.     CREATE_FUNC(MyScene);  
  23.       
  24. private:  
  25.     void initData();  
  26. };  
  27.   
  28. #endif /* defined(__MagicDemo__MyScene__) */  

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. //  
  2. //  MyScene.cpp  
  3. //  MagicDemo  
  4. //  
  5. //  Created by LiuYanghui on 13-12-27.  
  6. //  
  7. //  
  8.   
  9. #include "MyScene.h"  
  10. MyScene::MyScene()  
  11. {  
  12.       
  13. }  
  14.   
  15. MyScene::~MyScene()  
  16. {  
  17.       
  18. }  
  19.   
  20. Scene* MyScene::createScene()  
  21. {  
  22.     auto scene = Scene::create();  
  23.     auto layer = MyScene::create();  
  24.     scene->addChild(layer);  
  25.     return scene;  
  26. }  
  27.   
  28. bool MyScene::init()  
  29. {  
  30.     if ( !Layer::init() )  
  31.     {  
  32.         return false;  
  33.     }  
  34.     initData();  
  35.     return true;  
  36. }  
  37.   
  38. #pragma mark - initData  
  39. void MyScene::initData()  
  40. {  
  41.     Size visibleSize = Director::getInstance()->getVisibleSize();  
  42.       
  43.     // add your codes here...  
  44.       
  45. }  


对应的你可以添加Layer的类模板。方法一样,我就不重复了。


关于文件模板里面的一个预定义变量,介绍下:




ok,还有很多有趣的功能,可以大家自己探索。比如工程模板,插件等等。


0 0