quick-cocos2dx 3.3 c++绑定到Lua
2015-07-03 12:09
603 查看
网上帖子很多 参照了几篇 才搞定
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.cpp lua_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");
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.cpp lua_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");
相关文章推荐
- cocos2dx3.6 实现带光标的输入框(二);光标可移动
- Cocos2d-x-3.6学习(二)----全平台配置
- cocos2d-x v3.3开发环境配置
- cocos2d-x v3.3开发环境配置
- 14.2Cocos2d-x 中的粒子系统(笔记);14.2.1 ParticleBatchNode;
- cocos2d-x3.2 scrollView
- cocos2dx对于强大的RichText控制
- 在cocos2d-x中实现真随机数
- Cocos2D-x工程目录介绍
- cocos2d-x2.2.5 + cocos2d-x3.2鸟跳便宜源代码“开源”
- cocos2d 0.99 与cocos2d v2.1 restoreOriginalFrame 播放动画使用重置默认桢的区别
- 【转载】cocos2d-x tile map瓦片地图的黑线及地图抖动解决方案
- cocos2d-x坐标系
- cocos2d-x开发 - mac环境搭建
- cocos js 发布
- cocos2dx 程序 在 android 平台下的 启动顺序
- cocos2d-x 3.3 之卡牌设计 NO.6 Loading界面(异步加载图片,plist)
- Cocos2d-JS 热更新的策略
- Cocos2d-x 学习笔记–Cocos Studio UI加载
- cocos2dx 3.1.1 在线热更新 自动更新(使用AssetsManager更新游戏资源包)