傻瓜也会lua-bindings(Cocos2d-x 3.8.1)

来源:互联网 发布:故宫太和殿su模型数据 编辑:程序博客网 时间:2024/05/17 03:44

本文主要讲解如何在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

    TestLua.sln

  • 出现如下结果代表成功

    exe

  • 准备工作完成之后,正式开始配置导出c++到lua的环境

    一般我们不会用一个工具之前,首先查看README,找到并打开TestLua\frameworks\cocos2d-x\tools\tolua\README.mdownTranslation部分为本人渣渣翻译,大家将就一下,按步骤入坑
    环境搭建

导出简单的类

基本环境搭建完毕后,开始尝试导出一个简单的类,拿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的导出路径和使用的配置文件如下

    myGenbindings.py

    • 修改my.ini的配置如下(除了最后一个为no 其他的使用空值,也可按自己需要修改)

    my.ini

  • 要杀就杀得痛快,导出绑定的C++代码,完成Triple-kill

    TestLua/frameworks/cocos2d-x/tools/tolua目录下按住shift+鼠标右键,点击在此处打开命令窗口,输入myGenbindings.py,然后回车,看到如下结果即完成此次杀戮
    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()endreturn MainScene

回到visual studio 2015,按F5启动调试查看测试结果如下

调试

结语

博客处女作,不求写得beautiful,只求不误人子弟
本次带领大家Penta-kill,若要Legendary,下局带领大家导出带有lambda的函数到lua。

0 0