|
现在开发进度最高的就是这个了,还有自己的GUI界面和语法提示、自动完成系统,写好的地图脚本还能自动导入地图进行测试,思路上来说是很好很强大了。看着现在天赋简化的比快餐还快餐的魔兽世界,终于下决心把war3时代就想做的天赋系统给搞出来了。于是乎别无选择的用了galaxy++。
先说说这玩意的优点吧,比较有特色的应该算是代码的优化和加密了(obfuscate),虽说不是什么新东西,但一开始考虑加入这样的功能还是很有些想做专业的味道的。不过问题也很头疼,下面实际说明:
优化部分包括remove method,struct,field,三个选项,method还好,一般没什么问题,但要注意的一定要避免在class里使用未经声明的本地变量
#class XXX {
void foo () {
int var1
code...........
int var2 = 0;
code..........
}
}
这样的情况有很大可能会被误编译其他本地变量比如var1 = 0,具体出发条件尚不明;
struct和field的移除,基本上都会发生语法错误,特别是在有class和namespace的情况下,必出错;
加密也是一样,无复杂嵌套的情况下OK,出现class的instance调用后,编译肯定出错;
关于扩展的语法特征,头目已经发过帖子了,大家看看便知,想说的是坑爹一般的无指定数组和类:
无限数组在直接使用时还是ok的,但当把struct型的无指定数组直接用于类的实例调用时,基本会出错,like this:
#class Foo {
void foo ()
{
DialogControlSetPositionRelative(DialogControlLastCreated(),g_player,c_anchorCenter,tmpcontrol[XX].var,c_anchorCenter,61,0);
}
}
一个实例无法正常调用另一个实例的成员函数,原因不明;
触发器的bool XXX(bool c , bool a){} 是无法写入class的,因为在编译时会被编译成bool XXX(bool c , bool a,string current){};
++之类的算符会出现莫名其妙的错误,触发条件尚不明;
TriggerCreate(“XXXX”)中的XXXX正确与否不会被检测,甚至可能所有的string型参数都不会被检查。
现在知道主要是这些,总结下来,还是处在class上,并且现在还不支持静态和私有(至少说明上没说可以的啦),这个大丈夫嘎?
现在项目做了有一半了,所以觉得坑爹,也好要做下去,这就好像是取了个长得不错的女人当老婆,孩子都生了,脾气在怪也只好忍了,此文只为还想娶这位回家的用以参考而已。 |
评分
-
查看全部评分
|