quick-cocos2dx 3.3 c++绑定到Lua

网上帖子很多 参照了几篇 才搞定

1:注意事项 电脑上Python 不要装多个版本(2.x 3.x同时安装) 本帖子需要的版本是2.7.x,最好是2.7.6,如果同时安装了3.x的话 会有各种问题

2:新建c++ 文件

frameworks\runtime-src\Classes\下边创建

MyLuaBridge.h

#pragma once
#include "cocos2d.h"


class MyLuaBridge : public cocos2d::Ref
{
public:
MyLuaBridge(void);
~MyLuaBridge(void);
static MyLuaBridge * getInstance();
static MyLuaBridge * myLuaBridge;
void showErrorAlert(std::string msg);
};


MyLuaBridge.cpp

#include "MyLuaBridge.h"
MyLuaBridge* MyLuaBridge::myLuaBridge = nullptr;
MyLuaBridge::MyLuaBridge(void)
{
}
MyLuaBridge::~MyLuaBridge(void)
{
}
MyLuaBridge * MyLuaBridge::getInstance()
{
if (!myLuaBridge)
{
myLuaBridge = new (std::nothrow) MyLuaBridge();
CCASSERT(myLuaBridge,"FATAL: Not enough memory");
}
return myLuaBridge;
}
void MyLuaBridge::showErrorAlert(std::string msg)
{
cocos2d::MessageBox(msg.c_str(),"Error");
}

3:编写ini文件

frameworks\cocos2d-x\tools\tolua 新建MyLuaBridge.ini文件 拷贝其他ini文件内容然后稍作改动即可

prefix = MyLuaBridge

target_namespace = cc

headers = %(cocosdir)s/../runtime-src/Classes/MyLuaBridge.h

classes = MyLuaBridge

skip =

这部分网上有很多帖子


4:更改python脚本

'MyLuaBridge.ini' : ('MyLuaBridge','lua_MyLuaBridge_auto'),\
# 'cocos2dx_assetsmanager.ini' : ('cocos2dx_assetsmanager','lua_cocos2dx_assetsmanager_auto'),\


把新建的ini加进去

然后运行脚本 不出意外的话 就能成功


5:

frameworks\cocos2d-x\cocos\scripting\lua-bindings\auto 里边会生成lua_MyLuaBridge_auto.cpplua_MyLuaBridge_auto.hpp两个文件

然后在vs工程中libluacocos2d 把这两个文件 加入到 auto中,由于cpp文件中包含了#include "MyLuaBridge.h" 这个头文件,所以得把$(EngineRoot)\..\runtime-src\Classes这个路径加入到包含目录中,不然vs找不到.h文件会报错

6:

此时编译不出意外能正常通过,然后就是注册

appdelegate.cpp中 添加#include "lua_MyLuaBridge_auto.hpp"

register_all_MyLuaBridge(L);

编译新的player 即可使用


7:lua调用

cc.MyLuaBridge:getInstance():showErrorAlert("HelloWorld");




相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...