本文主要讲解如何在windows下导出C++接口到lua使用:
基本环境配置
本机环境
cocos2d-x 3.8.1
visual studio 2015
python 2.7.3(32位)
android-ndk-r10d
此环境建立在已经有cocos2d-x的环境之上,不会搭建环境的萌新可以参考官网示例。为测试,我们在桌面新建一个lua的项目
- 在桌面按住shift+鼠标右键,点击在此处打开命令窗口
cocos new TestLua -p com.alex.testLua -l lua
新建完成之后目录结构如下
为方便后续测试,我们先打开TestLua.sln编译出exe
出现如下结果代表成功
准备工作完成之后,正式开始配置导出c++到lua的环境
一般我们不会用一个工具之前,首先查看README,找到并打开TestLua\frameworks\cocos2d-x\tools\tolua\README.mdown,Translation部分为本人渣渣翻译,大家将就一下,按步骤入坑
导出简单的类
基本环境搭建完毕后,开始尝试导出一个简单的类,拿FirstBlood
- 我们在Classes/MyLuaBindings下创建一个TestClass
TestClass.h
#pragma once
#include "cocos2d.h"
class TestClass : public cocos2d::Ref
{
public:
TestClass()=default;
~TestClass()=default;
static void test1();
void test();
};
TestClass.cpp
#include "TestClass.h"
USING_NS_CC;
void TestClass::test()
{
CCLOG("Member function test");
}
void TestClass::test1()
{
CCLOG("Static function test");
}
接下来就是重头戏了,给生成工具写配置文件,完成Double-kill
- 避免和cocos2d的导出混在一起,我们自立门户,拷贝genbindings.py改名为myGenbindings.py,以cocos2dx.ini为模板,生成一份my.ini
- 修改myGenbindings.py的导出路径和使用的配置文件如下
- 修改my.ini的配置如下(除了最后一个为no 其他的使用空值,也可按自己需要修改)
要杀就杀得痛快,导出绑定的C++代码,完成Triple-kill
在TestLua/frameworks/cocos2d-x/tools/tolua目录下按住shift+鼠标右键,点击在此处打开命令窗口,输入myGenbindings.py,然后回车,看到如下结果即完成此次杀戮
接下来回到visual studio 2015打开的工程,将导出的代码加入工程,并修正包含路径,注册自己的模块,完成Quadro-kill
到了四杀,不完成Penta-kill,总是心里痒痒的,在TestLua/src/app/views/MainScene.lua编写我们的测试代码运行完成此次杀戮吧
local MainScene = class("MainScene", cc.load("mvc").ViewBase)
function MainScene:onCreate()
-- add background image
display.newSprite("HelloWorld.png")
:move(display.center)
:addTo(self)
-- add HelloWorld label
cc.Label:createWithSystemFont("Hello World", "Arial", 40)
:move(display.cx, display.cy + 200)
:addTo(self)
local t = TestClass:new()
t:test()
TestClass:test1()
end
return MainScene
回到visual studio 2015,按F5启动调试查看测试结果如下
结语
博客处女作,不求写得beautiful,只求不误人子弟。
本次带领大家Penta-kill,若要Legendary,下局带领大家导出带有lambda的函数到lua。