/// <summary> /// 注销一个插件 /// </summary> /// <param name="plugin">要注销的插件</param> public static void Unregister(VisualNovelPlugin plugin) { if (Plugins.ContainsKey(plugin.Name)) { if (plugin.OnUnregister(false)) { Plugins.Remove(plugin.Name); } else if (Application.isEditor) { Debug.LogWarning($"Plugin {plugin.Name} unregisteration failed: target plugin denied to unregister"); } } }
/// <summary> /// 注册一个插件 /// <para>相同名称的插件会覆盖之前注册的插件</para> /// </summary> /// <param name="plugin">要注册的插件</param> public static void Register([NotNull] VisualNovelPlugin plugin) { if (Plugins.ContainsKey(plugin.Name)) { if (!plugin.OnUnregister(true)) { throw new NotSupportedException($"Plugin {plugin.Name} registration failed: conflict plugin denied to unregister"); } Plugins.Remove(plugin.Name); } if (plugin.OnRegister()) { Plugins.Add(plugin.Name, plugin); } else if (Application.isEditor) { Debug.LogWarning($"Plugin {plugin.Name} registration failed: target plugin denied to register"); } }
/// <summary> /// 检查指定插件是否已经注册 /// </summary> /// <param name="plugin">目标插件</param> /// <returns></returns> public static bool Contains(VisualNovelPlugin plugin) { return(Plugins.ContainsValue(plugin)); }