为cocos2d-x项目增加Lua支持
开始为游戏增加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改写。
为cocos2d-x项目增加Lua支持的更多相关文章
- Visual Stdio 2017增加SVN支持
实验目的 当前公司项目源码文档等内容都保存在svn上,现在是用着小乌龟在文件浏览状态中去检出和提交等操作,没有集成到vs2017中来,比较麻烦.现在要把vs2017增加svn支持,希望可以直接在IDE ...
- Spring MVC 4.2 增加 CORS 支持
转自:http://blog.csdn.net/z69183787/article/details/53102112 Spring MVC 4.2 增加 CORS 支持 跨站 HTTP 请求(Cros ...
- [原创] Easy SysLite V1.2 (2016.5.29更新,新增加WIN10支持,一个程序适配所有系统减肥)
[原创] Easy SysLite V1.2 (2016.5.29更新,新增加WIN10支持,一个程序适配所有系统减肥) nohacks 发表于 2016-5-29 17:12:51 https:// ...
- windows 下 gvim/vim lua支持问题,neocomplete等插件支持
此文是按照知乎 https://www.zhihu.com/question/29333426 "windows下vim的lua支持问题?" 一文汇总的解决方案. 题主提供了不错的 ...
- Linux PHP增加JSON支持及如何使用JSON
Linux PHP增加JSON支持及如何使用JSON 目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它. JSON(JavaScript Object Notation) ...
- openerp学习笔记 domain 增加扩展支持,例如支持 <field name="domain">[('type','=','get_user_ht_type()')]</field>
示例代码1,ir_action_window.read : # -*- coding: utf-8 -*-from openerp.osv import fields,osv class res_us ...
- 将 Maven生成的java项目转化为支持 Eclipse IDE的项目
转自: http://www.xuebuyuan.com/1297046.html 将 Maven生成的java项目转化为支持 Eclipse IDE的项目 在前一篇文章中,我们使用maven创建 ...
- 为OLED屏增加GUI支持
为OLED屏增加GUI支持1:OLED驱动 为OLED屏增加GUI支持2:2D图形库 为OLED屏增加GUI支持3:字库 为OLED屏增加GUI支持4:文本框控件 为OLED屏增加GUI支持5:图片控 ...
- Nginx安装lua支持
Nginx安装lua支持 需要LuaJIT-2.0.4.tar.gz,ngx_devel_kit,lua-nginx-module 1.下载安装LuaJIT-2.0.4.tar.gz wget -c ...
随机推荐
- Java学习笔记之:java环境搭建
一.准备工作 在学习java之前需要安装对配置java的运行环境,所以我们需要安装以下软件: 1.java jdk 2.eclipse 二.配置环境变量 1.首先,找到你刚才安装的JDK的安装目录,我 ...
- 修改MDI工程主框架窗口标题(修改CREATESTRUCT结构体)
版权声明:本文为博主原创文章,未经博主允许不得转载. //在CMainFrame类的PreCreateWindow函数中加入 m_strTitle = _T("Hello"); c ...
- arcengine C# 读写lyr(转)
写lyr { IFeatureLayer LineLayer = axMapControl1.get_Layer(0) as IFeatureLayer; ILayerFile ...
- C++:概述
1.基本的输入输出,使用cin>>输入输入.使用cout<<输出 #include<iostream> using namespace std; int main( ...
- ubuntu服务器/home/分区替换3T硬盘
一,关机,将硬盘连接到主机. 二,开机 1,查看/dev/ 是否有多余的sdb 注,sda,sdb可以直接看做一整块硬盘. 而sda1,sda2即sda硬盘上的分区. 2,执行fdisk –l,确保添 ...
- HTTP Basic Authorization
在HTTP中,Basic Authorization基本认证是一种用来允许Web浏览器或其他客户端程序在请求时提供用户名和口令形式的身份凭证的一种登录验证方式. 在发送之前是以用户名追加一个冒号然后串 ...
- 基于条件随机场(CRF)的命名实体识别
很久前做过一个命名实体识别的模块,现在有时间,记录一下. 一.要识别的对象 人名.地名.机构名 二.主要方法 1.使用CRF模型进行识别(识别对象都是最基础的序列,所以使用了好评率较高的序列识别算法C ...
- MariaDB10.2.X-新特性2-支持check约束and with as
前几天写了一篇MariaDB10.2支持分析函数,大家印象中MySQL不支持with as ,check约束,那么MariaDB10.2也同样给你惊喜 1.with as MariaDB [test1 ...
- UIColor的用法
UIColor,CGColor,CIColor的区别和联系 layer.shadowColor = [UIColor redColor].CGColor; 这个是今天用到的.顺便总结一下. 1.UIC ...
- CentOS5.5 正式开始安装 Oracle 11g r2(图形界面安装)
一.下载oracle 官方网站, 可以下载最新版本 Oracle Database 11g Release http://www.oracle.com/index.html CentOS5. i386 ...