public static void Init() { if (_processSystems == null) { _processSystems = new List <ProcessSystemBase>(); string data = File.ReadAllText(Application.streamingAssetsPath + "/Data/ProcessSystemData/ProcessSystems.xml"); XDocument database = XDocument.Parse(data); List <XElement> events = database.Root.Elements("Event").ToList(); foreach (XElement e in events) { foreach (XElement listner in e.Elements("Listner")) { ProcessSystemBase system = Activator.CreateInstance(Type.GetType(_systemNamespace + listner.Value)) as ProcessSystemBase; if (system != null) { XAttribute messengerAttribute = e.Attribute("Messenger"); if ((messengerAttribute != null) && (messengerAttribute.Value == "CombatantMessenger")) { Messenger <ICombatant> .AddListener(e.Attribute("Type").Value, system.Process); } else { CombatMessenger.AddListener(e.Attribute("Type").Value, system.Process); } _processSystems.Add(system); } } } } }