为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 ...
随机推荐
- cojs QAQ的矩阵 题解报告
题目描述非常的清晰 首先我们考虑(A*B)^m的求法,这个部分可以参考BZOJ 杰杰的女性朋友 我们不难发现(A*B)^m=A*(B*A)^(m-1)*B A*B是n*n的矩阵,而B*A是k*k的矩阵 ...
- My_Plan part1 小结
数位DP AC十道题目以上 成就达成 八月份!三个月!想想就令人兴奋呢 开始写总结啦 貌似简单的数位DP只需要改改模板就可以啦 就按照我的做题顺序开始总结吧 先是学习了一发模板:http://www. ...
- Java学习笔记(一) java介绍
编程语言分为:编译型语言和解释型语言. 编译型语言需要经过特定编译器通过一次性编译,成为该特定平台硬件可执行的机器码,可脱离开发环境独立运行,运行效率较高,但是无法跨平台移植. 解释型语言需要经过特定 ...
- SSL/TLS/WTLS原理
一 前言 首先要澄清一下名字的混淆:1 SSL(Secure Socket Layer)是netscape公司设计的主要用于web的安全传输协议.这种协议在WEB上获得了广泛的应用.2 IETF(ww ...
- JavaWeb项目开发案例精粹-第3章在线考试系统-007View层
0.login.jsp <%@ page language="java" import="java.util.*" pageEncoding=" ...
- asp.net(C#)读取word 文档的方法
第一种方法 Response.ClearContent(); Response.ClearHeaders(); Response.ContentType = "Application/msw ...
- tomcat version
Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules 转自:http://jingwang0 ...
- 231. Power of Two
题目: Given an integer, write a function to determine if it is a power of two. 链接: http://leetcode.com ...
- 修改linux命令行提示符路径显示
命令显示行太长,影响观感,这样需要修改,具体方法: 1. 修改 ~/.bashrc,在最后一行添加: export PS1='[\u@\h\W]$' 其中\u是当前用户名,\h是当前主机名,\w显示当 ...
- 10位顶级PHP大师的开发原则
在Web开发世界里,PHP是最流行的语言之一,从PHP里,你能够很容易的找到你所需的脚本,遗憾的是,很少人会去用“最佳做法”去写一个PHP程序.这里,我们向大家介绍PHP的10种最佳实践,当然,每一种 ...