前言
这样的绑定实际上是把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++大佬能解决下第一个问题嘛