cocos2d-x从c++文件生成lua绑定文件及lua脚本文件

cocos2dx C++工程中使用lua脚本(一):环境搭建 不知不觉已经做了5年的cocos2dx开发了,其中绝大多数时间都是纯C++做休闲类游戏(工作需要),当然闲下来也抽时间撸过cocos的新宠CocosCreator。 一次无意中在cocos2dx的官方文档中看到了使用lua或者js脚本来扩展C++节点,难道这就是传说中的C++和lua混合开发的姿势? 不过官方介绍的很简单很简单,几乎可以说就是提了一下,貌似不愿多说一样。 官方链接:https... 阅读详情

需要参考自己的工程目录\frameworks\cocos2d-x\tools\tolua\目录下的README.mdown文件下载安装相关的工具;

(其中python需要安装32位的 --- 即使你是64位的系统; 其他几个工具也要装32位的)

本次测试使用的NDK是r10d;


1、准备文件:

a.h a.cpp

a.h => 

#ifndef __A_H__
#define __A_H__

#include "cocos2d.h"

class A : public cocos2d::Node
{
public:
CREATE_FUNC(A);

virtual bool init();
void testFunc();
};

#endif

a.cpp =>

#include "a.h"
using namespace cocos2d;

bool A::init()
{
if (!Node::init())
{
return false;
}

return true;
}

void A::testFunc()
{

}


2、修改配置文件:

进入=》 自己的工程目录\frameworks\cocos2d-x\tools\tolua\

复制cocos2dx.ini、genbindings.py,改名为my.ini,genbindings_my.py,然后修改这两个文件如下:

(1)修改genbindings_my.py:

    try:

        tolua_root = '%s/tools/tolua' % project_root
        output_dir = '%s/../runtime-src/Classes/test/luabinding' % project_root

        cmd_args = {'my.ini' : ('my', 'lua_my_auto'), \

}

* output_dir 是生成的绑定文件和lua脚本的存放路径

* cmd_args 是(待研究),总之,cmd_args中my.ini 和 my,这两个地方名字必须一致,lua_my_auto名字随便,这个是生成的绑定文件的名字;

(2)修改my.ini:

[my]  ==》 这个中括号中的内容和你文件名相同
# the prefix to be added to the generated functions. You might or might not use this in your own
# templates

prefix = my  ==》函数名的前缀,prefix同样可以和文件名相同

# create a target namespace (in javascript, this would create some code like the equiv. to `ns = ns || {}`)
# all classes will be embedded in that namespace

target_namespace = me  ==》模块名


android_headers = -I%(androidndkdir)s/platforms/android-14/arch-arm/usr/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.7/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include -I%(androidndkdir)s/sources/cxx-stl/gnu-libstdc++/4.8/include
android_flags = -D_SIZE_T_DEFINED_


clang_headers = -I%(clangllvmdir)s/lib/clang/%(clang_version)s/include
clang_flags = -nostdinc -x c++ -std=c++11 -U __SSE__


cocos_headers = -I%(cocosdir)s/cocos -I%(cocosdir)s/cocos/platform/android -I%(cocosdir)s/cocos/editor-support -I%(cocosdir)s/external
cocos_flags = -DANDROID


cxxgenerator_headers =


# extra arguments for clang
extra_arguments = %(android_headers)s %(clang_headers)s %(cxxgenerator_headers)s %(cocos_headers)s %(android_flags)s %(clang_flags)s %(cocos_flags)s %(extra_flags)s


# what headers to parse
headers = %(cocosdir)s/../runtime-src/Classes/test/a.h  ==》要转换的头文件路径,转换成绑定文件只需要类的头文件,不需要cpp文件,因为只需要类的声明


# what classes to produce code for. You can use regular expressions here. When testing the regular
# expression, it will be enclosed in "^$", like this: "^Menu*$".

classes = A ==》需要转换的类,支持正则表达式

C++ 对象的 Lua 脚本化编程 通过将 C++ 对象暴露给 Lua 脚本环境,我们可以在脚本中使用 C++ 对象的方法和属性,从而实现脚本与底层 C++ 代码的交互。下面是一个简单的示例,演示了如何将一个 C++ 类的对象导出给 Lua 脚本环境,并在 Lua 脚本中使用该对象的方法和属性。通过上述代码,我们可以在 C++ 程序中嵌入 Lua 脚本,并实现 C++ 对象的 Lua 脚本化编程。这样,我们可以通过编写简单的 Lua 脚本来操作和控制底层的 C++ 对象,从而实现更灵活和可扩展的应用。类,使其在 Lua 脚本中可用。 阅读详情

相关推荐

Cocos2d-x Lua绑定技术探究

Cocos2d-x 是一款广泛用于移动游戏开发的开源框架,由 Cocos2d 引擎发展而来。它支持多种编程语言,包括 C++、JavaScript 和 Lua。Cocos2d-x 以高效、易用、可扩展性好著称,被许多开发者用于跨平台游戏的开发。Lua是一种轻量级的脚本语言,它由巴西里约热内卢天主教大学(Pontifícia Universidade Católica do Rio de Janeiro, PUC-Rio)于1993年创建。

weixin_34581040的博客 840

cocos2dx3.17.2 tolua c++导出lua详细步骤

在使用tolua导出c++类的过程中遇到了很多坑,现在详细记录下来,免得在采坑。 cocos前期准备: windows10系统 下载coco2dx源码,我下载的是3.17.2,这个在官网下载即可。配置cocos环境,此步骤后检查cocos环境变量是否已经配置好,包括:COCOS_CONSOLE_ROOT,COCOS_TEMPLATES_ROOT,COCOS_X_ROOT 使用cocos命令...

见证我的poj成长之路 1374

Cocos2d-x之C++和Lua通信5个入门Demo

木头Cocos2d-x教程 Lua篇 Demo源代码。 教程地址: 第1章:http://blog.youkuaiyun.com/musicvs/article/details/8440707 第2章:http://blog.youkuaiyun.com/musicvs/article/details/8440919 第3章:http://blog.youkuaiyun.com/musicvs/article/details/8445027 第4章:http://blog.youkuaiyun.com/musicvs/article/details/8445079 第5章:http://blog.youkuaiyun.com/musicvs/article/details/8451361 第6章:http://blog.youkuaiyun.com/musicvs/article/details/8451369

cocos2dx 导出c++类供lua使用

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34096182的博客 211

【sap2000】部分模型通过.s2k文件合并模型generating a global model through partial models by .s2k text file

现在需要通过选项File → Import → SAP2000 .s2k Text File → Add to existing model(如果使用其中一个部分模型作为基础)或New model(如果使用新文件)添加部分模型,并使用以下导入选项。模型A(阶段1/5) Model A (Phase 1/5)模型B(阶段2/5) Model B (Phase 2/5)模型C(阶段3/5) Model C (Phase 3/5)模型E(阶段5/5) Model E (Phase 5/5)

hmywillstronger的博客 1753

Orange Pi 3B+刷入EmuELEC全过程:手把手教程

手把手教你如何在Orange Pi 3B+上成功刷入emuelec系统,涵盖烧录工具、镜像下载到启动设置的完整流程,让复古游戏体验轻松实现。

weixin_35732273的博客 1096

cocos2dx之C++调用Lua

原文地址:http://blog.youkuaiyun.com/dingkun520wy/article/details/49839701 1.引入头文件 #include "cocos2d.h" #include "CCLuaEngine.h" USING_NS_CC; using namespace std; extern "C"{ #include "lua.h" #include...

weixin_33912445的博客 258

新政下的绿电直连项目经济性分析:模式创新与价值重构

随着全球气候治理与低碳转型进程不断加速,绿电直连作为新能源就近消纳的创新模式,正成为破解新能源消纳瓶颈、规避碳关税壁垒的核心路径。2025年9月,国家发展改革委、国家能源局发布《关于完善价格机制促进新能源发电就近消纳的通知》(1192号文),为绿电直连项目的经济性分析与效益测算提供了明确的政策依据。本文将基于新政框架,深入解析绿电直连项目的经济性影响因素、盈利模式与优化路径,并结合案例与量化模型,为项目投资决策提供系统参考。

getusushu的博客 141

lua c++中的一种回调解决方法

见很多人发问cocos2dx 3+ 版本 lua 函数回调问题, 我在项目中是这样解决的: 因为我是使用了cocos 带有的 lua 绑定脚本(python写的):  cocos2d-x/tools/tolua/genbindings.py 在生成绑定的cpp文件中 作出 一点修改就好了: 注释掉的那句是本来生成的代码 改用tolua_fix 中的 toluafix_ref_

wtuetnsrmh的专栏 1946

AUTOSAR进阶图解==>AUTOSAR_EXP_VFB

AUTOSAR虚拟功能总线(VFB)摘要 AUTOSAR虚拟功能总线(VFB)是汽车开放系统架构中的核心抽象概念,为分布式电子系统提供统一通信模型。VFB允许软件组件在不了解底层物理通信机制的情况下交互,通过运行时环境(RTE)实现组件间的数据交换。系统配置过程将抽象的VFB视图转换为具体实现,包括组件到ECU的映射和通信机制选择。VFB采用"last-is-best"语义进行数据通信,并支持模式管理机制,使组件能根据系统状态调整行为。此外,VFB还支持与非AUTOSAR系统的交互,通常

一名留德华的,康德的信徒的,专注于汽车电子领域的博客 1117

SCI一区论文投稿终极技巧:Expert Systems With Applications;Knowledge-Based Systems

投稿计算机1区论文(如KBS、ESWA)的核心技巧包括:1)关键词选择需平衡范围与相关性,避免过细或过泛;2)研究内容聚焦单一核心创新点,避免内容分散;3)必须设计消融实验量化创新点的贡献;4)公开实验代码和数据集,确保可验证性;5)合理使用AI工具仅辅助写作,核心内容需自主完成;6)实验数据必须真实可靠。特别强调1区期刊对创新性和实验严谨性的高要求,需避免常见拒稿原因如内容分散、缺乏验证等。这些策略可提高投稿成功率,但前提是研究本身具有实质性创新。

ZhangJiqun&191cm&85kg 1156

【转载】教你用quick-cocos2d-x-3.3 genbindings生成lua绑定

原文地址:https://www.namidame.tech/quick-cocos2d-3-3-genbindings.html cocos2d框架提供了genbindings.py,将Lua函数与C++类绑定,即可在Lua中调用C++类。 写本教程的时候quick框架早已并入cocos2d-x,cocos2dx版本已经是3.14,触控好像也早已放弃了对Cocos Code IDE的支持,团队完全转向了Cocos Creator这个新宠的开发。但鉴于网上的教程基本都是三四年前的,用新版本框架调试难度重重,

boxboss的博客 462

SOMEIP协议--第三节[SOMEIP/SD](SD格式)

Entry和Option是SD报文中最重要的内容,是服务发现功能的承载。7.Minor Version是指当前服务的小版本号,可以配置,用于给用户区分当前服务的版本用的。注意:stop offer,stop subscribe,Subscribe Nack 这三条的TTL一定设为0,唯一和offer,subscribe,Subscribe的区别。Option用来辅助Entry实现其功能,是Entry携带的附加信息,作用上一般是用来告诉对端自己业务的ip和port信息,方便对端通过ip和port发送报文。

qq_41816308的博客 1340

Cocos2d-x3.0 lua绑定C++类

这里记录下我实现Lua绑定的全过程,

杜甲同学的专栏 7285

【实现100个unity特效之4】Unity ShaderGraph使用教程与各种特效案例(2023/12/1更新)

ShaderGraph是Unity中的一个可视化工具,用于创建和编辑图形着色器。其意义在于简化编写复杂着色器的过程,减少对具体编程语言的依赖,使艺术家和设计师可以更方便地创建各种美术效果。使用ShaderGraph可以通过图形界面设置着色器属性,包括颜色、纹理、光照等,并在视窗预览中即时显示结果,从而快速迭代和调整着色器。使用ShaderGraph需要先安装Unity 2018.1或以上版本,并添加ShaderGraph插件。打开ShaderGraph面板后,可以通过拖放节点并连接它们来创建着色器。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 4万+

2024年 Flutter 面试题大全(2024.6.28持续更新中)

2024年 Flutter 面试题大全(持续更新中)

Code Metaverse 6669

quick-cocos2d-x 创建自定义lua绑定c++类

内容主要参考 “在quick-cocos2d-x中添加自定义的类给lua使用” ( http://www.codeo4.cn/archives/746) 1. quick-coco2d-x 使用 tolua++ 来简化lua绑定c++类操作,mac下用到了 /usr/local/bin/tolua++ ,可以把bin/mac下的可执行程序复制过去,省得编译安装了。

wtuetnsrmh的专栏 733

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

如何使用cocos的自动绑定工具实现lua调用c++的类

如何使用cocos的自动绑定工具实现lua调用c++的类主要分成以下步骤1、创建自己的c++类文件2、然后修改和执行引擎文件夹cocos2d-x-3.7\tools\tolua 目录下的genbindings.py 文件,3、编写自己的ini文件4、将生成的绑定文件导入到自己的cocos项目中使用  下面详细介绍每个步骤的过程一、创建自己的c++类以下是cocos2d-x-3.7\tests\lu...

xuefujin的博客 533

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

c++ lua

我写了一个用3.0的工具导出类到lua,自动生成代码的方法。 以前要导出c++类到lua,就得手动维护pkg文件,那简直就是噩梦,3.0以后就会感觉生活很轻松了。 下面我就在说下具体做法。 1、安装必要的库和工具包,以及配置相关环境变量,请按照cocos2d-x-3.0rc0\tools\tolua\README.mdown说得去做,不做赘述。 2、写c++类(我测试用的是co

柒步的专栏 827

quick cocos2dx 3.3rc1 如何Lua调用自定义C++类(一)------ 生成桥接代码

虽然网上很多关于Lua调用自定义C++类的文章,但不知道为什么,一到自己去实践,总是遇见这样那样的问题,造成失败。让我都怀疑文章的正确性了。。。有些因为细节原因,而文章又没提!踩了无数的坑,昨天终于成功了,今天迫不及待写篇文章与大家分享!如果对lua与C++如何交互不怎么清楚的朋友,可以看下这篇文章:【木头Cocos2d-x 026】Lua篇(第01章...

weixin_33701251的博客 131

cocos2d lua binding自定义 实践

How to Use bindings-generator ================== On Windows: ------------ * Make sure that you have installed `android-ndk-r16` or later. * Download python2.7.3 (32bit) from (http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi). * Add the installed .

pyf_914406232的博客 3189

cocos2dx tolua c++

E:\source\client\core\frameworks\runtime-src\Classes\lua-stub里面的stub.cpp就是给lua调用的  Stub.cpp Stub.h E:\source\client\core\frameworks\cocos2d-x\tools\tolua里面的Stub.py就是它的tolua脚本 生成之后的文件放到E:\source\cl

ningcaicheng的专栏 1076

Coco2dx-3.0中怎样调用LUA

一个用3.0的工具导出类到lua,自己主动生成代码的方法。 曾经要导出c++类到lua。就得手动维护pkg文件,那简直就是噩梦。3.0以后就会感觉生活非常轻松了。 以下我就在说下详细做法。 1、安装必要的库和工具包,以及配置相关环境变量,请依照cocos2d-x-3.0rc0\tools\tolua\README.mdown说得去做,不做赘述。 2、写c++类(我測试用...

weixin_34081595的博客 114

cocos2dx3.0rc导出自定义类到lua的方法

以前要导出c++类到lua,就得手动维护pkg文件,那简直就是噩梦,3.0以后就会感觉生活很轻松了。 转载请注明出处http://www.cnblogs.com/mrblue/p/3637910.html 下面我就在说下具体做法。 1、安装必要的库和工具包,以及配置相关环境变量,请按照cocos2d-x-3.0rc0\tools\tolua\README.mdown说得去做,不做...

weixin_30287169的博客 167

【Cocos2d-x】绑定C++自定义类到Lua

使用tolua++工具在Lua中使用C++自定义类

3361

Cocos2d-x中C++回调Lua函数

前言 最近做一个lua异步加载纹理的功能,在C++回调lua函数时,有时会发生崩溃的情况,原因可能是我直接使用了lua的api对堆栈操作而导致了数据出错,其实Cocos2dx已经封装好了相关的api,所以调用Cocos2dx的api就可以很方便的调用Lua函数。 在C++中如何引用Lua函数? 通过查看CCScheduler中的scheduleScriptFunc方法可以看到在C++代码中是用unsigned int表示Lua函数的,其实int类型也可以。 示例代码 AsynRes

3764
上一篇: Eclipsez中打不开c++文件,显示Editor could not be initialized.
下一篇: cocos2dx(3.9)工程项目,使用android studio打包并调试
-夜下月光-
博客等级 码龄15年 20粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值