using System; using System.Collections.Generic; using UnityEngine; namespace Activity.EventSubscriber { public class ActivitySubscriberManager { private static List _activityEventSubscribers; // 已注册的订阅者类型,用于防止重复初始化 private static readonly HashSet _registeredSubscriberTypes = new(); public static List ActivityEventSubscribers => _activityEventSubscribers ??= new List(); public static void InitEventSubscriber(Type type) { try { var res = typeof(IActivityEventSubscriber).IsAssignableFrom(type) && type.IsClass; if (!res) return; // 同一个订阅者类型只初始化一次,避免 Stage 重进导致重复订阅 if (_registeredSubscriberTypes.Contains(type)) return; _activityEventSubscribers ??= new List(); _activityEventSubscribers.Add((IActivityEventSubscriber)Activator.CreateInstance(type)); _registeredSubscriberTypes.Add(type); } catch (Exception e) { Debug.LogError($"[ActivitySubscriberManager] Error processing type {type.Name}: {e.Message}"); } } } }