开始为游戏增加Lua脚本支持,今天主要配置了一下开发环境:cocos2d-x 2.2.1,xcode5。
1. 创建cocos2d-x-lua项目
类似于创建C++项目,用以下命令即可:
python create_project.py -project Lua1 -package com.GAMTEQ.Lua1 -language lua
这样创建出的项目,主要是为了让lua调用C++,即以Lua脚本来启动游戏。
2. 为项目增加Lua支持
由于我的游戏以前没有Lua支持,所以不能用上述命令。
解决方法很简单,把$MYDIR/cocos2d-x-2.2.1/scripting/lua目录add到xcode的项目里就可以了。
但是要注意不是全部add,具体add哪些文件,要参考1中的lua目录内容:
但是链接时遇到问题
ld: warning: ignoring file /Users/Christian/code/cocos2d-x-2.2.1/scripting/lua/luajit/android/armeabi/libluajit.a, file was built for archive which is not the architecture being linked (i386): /Users/Christian/code/cocos2d-x-2.2.1/scripting/lua/luajit/android/armeabi/libluajit.a Undefined symbols for architecture i386: "_luaL_checklstring", referenced from: _cocos2dx_lua_loader in Cocos2dxLuaLoader.o
明明add的是luajit/ios/libluajit.a,为什么报错信息显示链接到android的库了呢,看了xcode项目信息,也是ios的库。
于是删掉这几个库,执行sh $MYDIR/cocos2d-x-2.2.1/scripting/lua/luajit/build_ios.sh重新编译luajit,问题解决。
这种链接错误在我编译libcurl时也遇到过,可见xcode这里是有bug的,所以再遇到这种问题,还是手动重编库为妙。
3. C++访问Lua脚本
具体访问方法参考我GitHub上今天的commit,不细说。
值得一提的是,Lua脚本放在何处。我本来是放在Classes下的,然后再add进Resources。但是ios的资源是要拷贝到Resources下的,导致同样的脚本有2个副本。运行的时候发现,修改Classes下的脚本,不影响运行结果,重新add进Resources也无用。只有直接修改Resources下的脚本才有效。
所以还是应该把Lua脚本放在Resouces/Script目录下。
4. Lua脚本编辑器
xcode貌似不能支持Lua,既没高亮又没提示。今天尝试了Sublime和IntelliJ,果断选择前者,非常好用。尽量不用破解版,未购买只是会偶尔弹窗提示几次而已。配置Sublime开发环境的方法参考我转载的一篇文章:
http://www.cnblogs.com/gamteq/p/3535152.html
5. 计划
接下来几天准备复习一下Lua语法,把游戏的配置和角色状态机用Lua改写。