You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.1 KiB
70 lines
2.1 KiB
using System; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
|
|
namespace ET |
|
{ |
|
[ObjectSystem] |
|
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> |
|
[FriendClass(typeof(UIEventComponent))] |
|
public static class UIEventComponentSystem |
|
{ |
|
public static async ETTask<UI> OnCreate(this UIEventComponent self, UIComponent uiComponent, string uiType, UILayer uiLayer) |
|
{ |
|
try |
|
{ |
|
UI ui = await self.UIEvents[uiType].OnCreate(uiComponent, uiLayer); |
|
return ui; |
|
} |
|
catch (Exception e) |
|
{ |
|
throw new Exception($"on create ui error: {uiType}", e); |
|
} |
|
} |
|
|
|
public static void OnRemove(this UIEventComponent self, UIComponent uiComponent, string uiType) |
|
{ |
|
try |
|
{ |
|
self.UIEvents[uiType].OnRemove(uiComponent); |
|
} |
|
catch (Exception e) |
|
{ |
|
throw new Exception($"on remove ui error: {uiType}", e); |
|
} |
|
|
|
} |
|
} |
|
} |