【ET6.0】接入FairyGUI

505 阅读1分钟

参照项目

新增适配

1. FGUI的Transition的Play方法需要加适配

ILHelper.cs的RegisterDelegateConvertor方法中添加委托转换:

appdomain.DelegateManager.RegisterDelegateConvertor<FairyGUI.PlayCompleteCallback>((act) =>
{
    return new FairyGUI.PlayCompleteCallback(() => { ((Action) act)(); });
});

2. FUIMainComponent文件只有AwakeSystem生效

原打开UI代码:

var fui = await FUIMain.CreateInstanceAsync(args.ZoneScene);
fui.Name = FUIMain.UIResName;
fui.AddComponent<FUIMainComponent>();
args.ZoneScene.GetComponent<FUIComponent>().Add(fui, true);
args.ZoneScene.GetComponent<FUIScalerComponent>().Register(fui.GObject, AdaptedType.RelationFullScreen);

fui是被Add到FUIComponent,而不是FUIComponent.AddComponent(也不能这么写),所以fui及其children是不支持EventSystem事件,Awake事件能执行是因为创建组件的时候直接执行了,而不是由EventSystem触发。

解决方案:
  1. FUIMainComponent直接加到FUIComponent,注意关闭界面的时候需要手动移除
args.ZoneScene.GetComponent<FUIComponent>().AddComponent<FUIMainComponent>;
  1. FUIComponent里面重新实现一套生命周期方法(待实现)