CTT/Unity/Assets/HotfixView/System/UIEventComponentSystem.cs

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);
}
}
}
}