FairyGUI官網:https://www.fairygui.com/
FairyGUI版本:2022.1.0p1
cocos版本:2.4.4
Laya收購了FairyGUI,看到某些公司也有在使用,下載下來看看。
FairyGUI優點:
1.提供了更豐富的組件。比cocos自帶組件要多,例如虛擬列表
2.一套UI多個游戲引擎可用。比如unity做手游,cocos發小游戲平台的。或者玩多個平台的游戲開發者,只學fairygui不用再去細學每個引擎的UI了。
3.drawcall優化方案。采用矩形碰撞判斷組件是否遮擋,調整深度排序,盡量將同紋理的圖片擺在一起,減少dc數。
4.多國語言和分支。根據語言類型替換文本和圖片,而且在編輯UI時就能看到顯示效果。
下載FairyGUI
https://www.fairygui.com/download
綠色版,不需要安裝,在這個編輯器下編輯UI。
發現個bug輸入法不能打字,必須將編輯器置於后台,然后再置於前台才能打字。

下載FairyGUI的演示Demo
https://github.com/fairygui/FairyGUI-cocoscreator
可以看看fairygui都支持哪些UI,大致心里有個數,可以看到就是游戲中常用的UI。
cocos到現在都沒有官方的虛擬列表...

在cocos中使用fairygui運行庫
新建一個cocos空項目,把從github上下載的demo中fairygui運行庫復制到新項目中。

可以看到這個庫有將近800kb,構建項目發布后有350kb左右。

在cocos中選擇fairygui.js,在屬性面板勾選允許編輯器加載。

在vscode中輸入fgui有提示,則表示導入成功了。

使用FairyGUI編輯一個簡單頁面
創建了一個登錄頁,比較簡單,只有背景、開始按鈕、版本文本。

編輯后,發布得到兩個文件,圖片已經自動合圖了。

將這2個文件放入cocos中

代碼中創建這個登錄頁
onLoad() {
//創建UI根節點
fgui.GRoot.create();
//加載UI包
fgui.UIPackage.loadPackage("UI/Login", function (err) {
let view: fgui.GComponent = fgui.UIPackage.createObject("Login", "LoginScene").asCom;
fgui.GRoot.inst.addChild(view);
});
}
顯示效果

獲取組件通過getchild獲取
const { ccclass, property } = cc._decorator;
@ccclass
export default class MainScene extends cc.Component {
onLoad() {
//創建UI根節點
fgui.GRoot.create();
//加載UI包
fgui.UIPackage.loadPackage("UI/Login", function (err) {
let view: fgui.GComponent = fgui.UIPackage.createObject("Login", "LoginScene").asCom;
fgui.GRoot.inst.addChild(view);
//按鈕
view.getChild("startBtn").onClick(() => {
console.log("點擊開始");
}, this);
//文本
view.getChild("verLab").asTextField.text = "v1.2.3";
});
}
}
到此一個簡單的fairygui界面就制作完成了... ...
