通过ccb(CocosBuilder)文件生成cocos2dx代码

时间:2022-03-25 11:50:48

 在C++下使用ccb。绑定调用,成员变量。让人头疼又easy犯错。

自己用pythong写了个小程序,通过ccb文件直接生成C++代码

python我用的不多。又是随性所做。代码质量就非常差。大家多多包容吧。

一共包含三个文件,codeGen.py, myCommon.py ,genCpp.py

执行codeGen.py。

myCommon.py中包含一些配置信息,依据详细项目自己改动

class projectinfo:
    def __init__(self): 
        self.projectName='FishingJoyForCcb'  #项目的名称
        self.customSubclass={<span style="white-space:pre">			#这个是自定义的父类,ccb文件里不会有这些信息,仅仅好在这里加上,前key是子类 value是父类
      #sample 'Coin':'GameObject'  subclassName : superclassName
      #'Coin':'GameObject' 
        }

        self.ownerClass={<span style="white-space:pre">		#当成员 和回调方法的为owner类型的时候,能够在这里指定owner class。这样在ccb中定义的方法和成员变量就会在owner class中申明
        #sample 'ownerClass': [className1,className2 ....]
        #'Coin':['Match3Level']
        }

        #self.ccbPath='/Users/dev/cocos2d-x-2.2.3/projects/FishingJoyForCcb/ccb_source'
        #self.classPath='/Users/dev/cocos2d-x-2.2.3/projects/FishingJoyForCcb/Classes'
        self.ccbPath='./'   #ccb文件的文件夹 与在命令行路径一样。命令行优先 ,默觉得当前文件夹
        self.classPath='./' #cpp 文件的文件夹 与在命令行路径一样,命令行优先 ,默觉得当前文件夹</span>

        self.ccbTargetType=['None','RootDocument','Owner']
        self.ccbCustomPropertiesType=['int' ,'float','bool' ,'std::string' ]

        # className : classInfo
        self.classDictionary={}

命令行

   python codeGen.py  -c ./  -o ./  Coin Fish

  -c,-ccbpath : ccb file path
   -o,-outputpath, --generator cpp file path

跟myCommon.py中定义的一个意思

最后能够跟上须要生成类的名称。没有不论什么类名,就生成ccb文件夹下的全部类。


成员变量我习惯加m_的前缀。因为程序写的烂,这个地方不太好改。大家凑合吧。

因为我自己主动给成员变量加了前缀,这样在ccb定义的时候就不用加前缀了,大写开头的变量名就能够了

比如:Type

这样就会生成 

 int  m_Type 的成员变量

和 int getType() 与 void setType(int value)的方法

    

自己主动生成代码才项目初期非常好用。后期不好维护。使用的时候做好规划。

ccb的扩展属性假设是string类型。我这里好像有些问题,大家使用当心。

代码下载地址