From 2afbb545027568fccc85853e18af02a7c6b2929e Mon Sep 17 00:00:00 2001
From: chai <215380520@qq.com>
Date: Tue, 16 May 2023 16:03:51 +0800
Subject: *misc
---
.../Assets/Scripts/Tools/ScopedEvent.cs | 54 ++++++++++++++++++++++
1 file changed, 54 insertions(+)
create mode 100644 WorldlineKeepers/Assets/Scripts/Tools/ScopedEvent.cs
(limited to 'WorldlineKeepers/Assets/Scripts/Tools/ScopedEvent.cs')
diff --git a/WorldlineKeepers/Assets/Scripts/Tools/ScopedEvent.cs b/WorldlineKeepers/Assets/Scripts/Tools/ScopedEvent.cs
new file mode 100644
index 0000000..23bfaa8
--- /dev/null
+++ b/WorldlineKeepers/Assets/Scripts/Tools/ScopedEvent.cs
@@ -0,0 +1,54 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.AI;
+
+namespace WK
+{
+
+ ///
+ /// 类似UnityEvent但是更轻量
+ ///
+ public class ScopedEvent
+ {
+ public delegate void EventHandler(params object[] args);
+
+ private List m_Handlers = new List();
+
+ public void AddListener(EventHandler handler)
+ {
+ if(handler == null)
+ {
+ return;
+ }
+ if (m_Handlers.Contains(handler))
+ return;
+ m_Handlers.Add(handler);
+ }
+
+ public void RemoveListener(EventHandler handler)
+ {
+
+ if (handler == null)
+ {
+ return;
+ }
+ m_Handlers.Remove(handler);
+ }
+
+ public bool HasHandler(EventHandler handler)
+ {
+ return m_Handlers.Contains(handler);
+ }
+
+ public void Invoke(params object[] args)
+ {
+ for(int i = 0; i < m_Handlers.Count; ++i)
+ {
+ m_Handlers[i](args);
+ }
+ }
+
+ }
+
+}
--
cgit v1.1-26-g67d0