cocos2dx 3.17.2 集成 FairyGUI【绑定lua】(3)

前言

这样的绑定实际上是把fairyGUI当做一个依赖工程加进来,其实也可以直接复制相关代码到工程下也可以。

2021年下载的运行库导出的lua绑定文件怎么那么多错误嘞

1:参考资料

https://www.jianshu.com/p/547e584e05d8

https://www.cnblogs.com/whj0402/p/12196380.html

2:主流程

1.绑定lua相关配置修改

打开\cocos2d-x-3.17.2\tools\tolua文件夹,里面复制一个ini文件改名为 cocos2dx_fairygui.ini

修改点还挺多的直接用现成的吧

修改genbindings.py,最后面添加一行

'cocos2dx_fairygui.ini' : ('cocos2dx_fairygui', 'lua_cocos2dx_fairygui_auto'), \

修改cocos2d-x-3.17.2\tools\bindings-generator\targets\lua\conversions.yaml里的ns_map:下添加fairygui的命名空间"fairygui::": "fgui."

 to_native:
"Margin": "ok &= luaval_to_margin(tolua_S, ${arg_idx}, &${out_value}, ${lua_namespaced_class_name}:${func_name})"
 from_native:
"Margin": "margin_to_luaval(tolua_S, ${in_value})"

以及在中间to_native:和底部from_native: 添加下面代码,以便处理Margin类型的转换。

 2.命令行执行 genbindings.py,直接全部生成,虽然报错了几次

生成成功

3.在C++工程中导入两个文件以及拷贝自群文件的四个文件

lua_cocos2dx_fairygui_manual.hpp
lua_cocos2dx_fairygui_manual.cpp
LuaBasicConversions_fairygui.h
LuaBasicConversions_fairygui.cpp

添加现有项

添加头文件和注册接口

4.lua代码测试

将测试资源拷贝到res下面

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)


    fgui.UIPackage:addPackage("res/ui/MainMenu")
    scene = cc.Scene:create()
    scene:addTo(self)
    print(scene)
    local groot = fgui.GRoot:create(scene, 1)
    groot:retain()
    local _view = fgui.UIPackage:createObject("MainMenu", "Main")
    groot:addChild(_view)
end

return MainScene

看到了效果了

5.失败总结

ini文件直接拷贝过来的,报错了,重新对下路径

headers = %(cocosdir)s/cocos/editor-support/libfairygui/Classes/FairyGUI.h %(cocosdir)s/cocos/editor-support/libfairygui/Classes/FairyGUIMacros.h

又错了,这次怎么这么不顺利, cocos_headers漏加-I%(cocosdir)s/cocos/editor-support/libfairygui/Classes

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

cpp编译出现一堆错误~~~~~~~

此类错误可以删除该注册方法,在lua_cocos2dx_fairygui_manual该文件中有注册,谢谢给出文件的大佬

2个同名函数另一个改名

不能实例化抽象类,暂时把纯虚函数都弄成虚函数吧

这个错误又是啥,这个类怎么看都是已经定义了啦

原来是这里用了前置类申明,还是直接include进来吧

最后总算编译动过了,有C++大佬能解决下第一个问题嘛

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值