Cocos2d-x版本是3.16
FairyGUI庫(kù)來自https://github.com/fairygui/FairyGUI-cocos2dx
接入前確保你的項(xiàng)目在接入前可以通過cocos compile -p xxx 命令正常編譯打包采转,每接入一個(gè)平臺(tái)都可以通過此命令編譯打包以確認(rèn)是否接入正常。
預(yù)備
- 復(fù)制libfairygui到frameworks\cocos2d-x\cocos\editor-support\fairygui
- 修改CCLabel.h的672行陨帆,void updateBMFontScale();前添加virtual
綁定tolua
編寫cocos2d-x\tools\tolua\cocos2dx_fairygui.ini,修改ini里的headers字段残腌,后面添加LuaBasicConversions_fairygui.h,這樣生成的auto文件才會(huì)inlucde绍移。還是用我的吧集嵌。
- 修改 cocos2d-x\tools\tolua\genbindings.py,添加fairygui一行:
'cocos2dx_fairygui.ini' : ('cocos2dx_fairygui', 'lua_cocos2dx_fairygui_auto'), \
- 修改cocos2d-x\tools\bindings-generator\targets\lua\conversions.yaml里的ns_map:下添加fairygui的命名空間"fairygui::": "fgui."放吩,另外智听,還要分別在中間和底部添加下面代碼,以便處理Margin類型的轉(zhuǎn)換渡紫。
"Margin": "ok &= luaval_to_margin(tolua_S, ${arg_idx}, &${out_value}, \"${lua_namespaced_class_name}:${func_name}\")"
"Margin": "margin_to_luaval(tolua_S, ${in_value})"
- 在frameworks\cocos2d-x\cocos\scripting\lua-bindings\manual下新建fairygui目錄到推,把下面四個(gè)文件拷進(jìn)去。
lua_cocos2dx_fairygui_manual.hpp
lua_cocos2dx_fairygui_manual.cpp
LuaBasicConversions_fairygui.h
LuaBasicConversions_fairygui.cpp
- 在cmd中惕澎,切換到frameworks\cocos2d-x\tools\tolua目錄莉测,運(yùn)行python genbindings.py,正常的話會(huì)在frameworks\cocos2d-x\cocos\scripting\lua-bindings\auto生成兩個(gè)文件:
lua_cocos2dx_fairygui_auto.hpp
lua_cocos2dx_fairygui_auto.cpp
- 修改frameworks\cocos2d-x\cocos\scripting\lua-bindings\manual\lua_module_register.cpp唧喉,添加
#include "scripting/lua-bindings/manual/fairygui/lua_cocos2dx_fairygui_manual.hpp"
在lua_module_register中添加
register_all_cocos2dx_fairygui_manual(L);
接入Win32
- 在VS工程右鍵“添加” “現(xiàn)有項(xiàng)目”捣卤,找到libfairygui.vcxproj,在VS左側(cè)下端選擇“屬性管理器”八孝,展開libfairygui董朝,在Debug和Release中分別添加現(xiàn)有屬性表“cocos2dx.props”和“cocos2d_headers.props”,在cocos2d\2d目錄下可以找到干跛。
- 在VS中的libluacocos2d下的manual中新建項(xiàng)fairygui子姜,并把四個(gè)文件添加進(jìn)去。
- 打開屬性表的“cocos2dx.props”,通用屬性|鏈接器|輸入|附加依賴項(xiàng)楼入,添加libfairygui.lib
接入ios_mac
在xcode里的cocos2d_libs.xcodeproj下的editor-support下添加fairygui的引用闲询,然后在Build Settings的左上角,選擇cocos2d_libs(注意是藍(lán)色圖標(biāo))浅辙,在User Header Search Paths中添加${SRCROOT}/../cocos/editor-support/fairygui/Classes。然后在cocos2d_lua_bindings.xcodeproj的auto和manual里添加對(duì)應(yīng)的文件阎姥,貌似就可以了记舆。
接入android
修改frameworks\cocos2d-x\cocos\Android.mk,在適當(dāng)?shù)奈恢锰砑?/p>
LOCAL_STATIC_LIBRARIES += fairygui_static
$(call import-module,editor-support/fairygui)
修改frameworks\cocos2d-x\cocos\scripting\lua-bindings\proj.android\Android.mk呼巴,
在適當(dāng)?shù)奈恢锰砑?/p>
LOCAL_SRC_FILES += ../manual/fairygui/lua_cocos2dx_fairygui_manual.cpp \
../manual/fairygui/LuaBasicConversions_fairygui.cpp \
../auto/lua_cocos2dx_fairygui_auto.cpp
LOCAL_C_INCLUDES
$(LOCAL_PATH)/../../../editor-support/fairygui/Classes \
$(LOCAL_PATH)/../manual/fairygui \
LOCAL_EXPORT_C_INCLUDES下添加
$(LOCAL_PATH)/../manual/fairygui \
測(cè)試
測(cè)試比較簡(jiǎn)單泽腮,首先確保各平臺(tái)運(yùn)行正常,然后在lua里調(diào)用
fgui.UIPackage:addPackage("res/test")
加載test包即可衣赶,具體使用請(qǐng)參考官網(wǎng)http://www.fairygui.com
ps:
對(duì)了诊赊,運(yùn)行tolua的時(shí)候,要用ndk r9b府瞄,然后用cocos命令編譯的時(shí)候要換成r16b碧磅,不然會(huì)報(bào)錯(cuò)……