72 lines
2.6 KiB
C#
72 lines
2.6 KiB
C#
using ET;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
|
|
namespace ET
|
|
{
|
|
public class UIEventComponentAwakeSystem : AwakeSystem<UIEventComponent>
|
|
{
|
|
public override void Awake(UIEventComponent self)
|
|
{
|
|
UIEventComponent.Instance = self;
|
|
|
|
//GameObject uiRoot = GameObject.Find("/Global/UI");
|
|
//ReferenceCollector referenceCollector = uiRoot.GetComponent<ReferenceCollector>();
|
|
|
|
//self.UILayers.Add((int)UILayer.Hidden, referenceCollector.Get<GameObject>(UILayer.Hidden.ToString()).transform);
|
|
//self.UILayers.Add((int)UILayer.Low, referenceCollector.Get<GameObject>(UILayer.Low.ToString()).transform);
|
|
//self.UILayers.Add((int)UILayer.Mid, referenceCollector.Get<GameObject>(UILayer.Mid.ToString()).transform);
|
|
//self.UILayers.Add((int)UILayer.High, referenceCollector.Get<GameObject>(UILayer.High.ToString()).transform);
|
|
|
|
var uiEvents = Game.EventSystem.GetTypes(typeof(UIEventAttribute));
|
|
foreach (Type type in uiEvents)
|
|
{
|
|
object[] attrs = type.GetCustomAttributes(typeof(UIEventAttribute), false);
|
|
if (attrs.Length == 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
UIEventAttribute uiEventAttribute = attrs[0] as UIEventAttribute;
|
|
AUIEvent aUIEvent = Activator.CreateInstance(type) as AUIEvent;
|
|
self.UIEvents.Add(uiEventAttribute.UIType, aUIEvent);
|
|
}
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 管理所有UI GameObject 以及UI事件
|
|
/// </summary>
|
|
public static class UIEventComponentSystem
|
|
{
|
|
public static async ETTask<FUI> OnCreate(this UIEventComponent self, FUIComponent uiComponent, string uiType)
|
|
{
|
|
try
|
|
{
|
|
FUI ui = await self.UIEvents[uiType].OnCreate(uiComponent);
|
|
//UILayer uiLayer = ui.GameObject.GetComponent<UILayerScript>().UILayer;
|
|
//ui.GameObject.transform.SetParent(self.UILayers[(int)uiLayer]);
|
|
|
|
return ui;
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
throw new Exception($"on create ui error: {uiType}", e);
|
|
}
|
|
}
|
|
|
|
public static void OnRemove(this UIEventComponent self, FUIComponent uiComponent, string uiType)
|
|
{
|
|
try
|
|
{
|
|
self.UIEvents[uiType].OnRemove(uiComponent);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
throw new Exception($"on remove ui error: {uiType}", e);
|
|
}
|
|
|
|
}
|
|
}
|
|
} |