private void AfterLoadAssetBundle(Type fairyGUIWindowType, FairyGUIBaseWindow bw, FairyGUIWindowInfo fairyGuiWindowInfo, object sourceData) { string windowName = fairyGUIWindowType.Name; string typeName = fairyGUIWindowType.FullName; Assembly assembly = Assembly.LoadFrom(fairyGUIWindowType.Assembly.Location); Type type = assembly.GetType(typeName); if (type == null) { Debug.LogError("导入的" + fairyGuiWindowInfo.packageName + "包,并没有为其创建对应脚本文件,请创建" + windowName + "脚本并继承自FairyGUIBaseWindow。"); return; } object obj = type.Assembly.CreateInstance(typeName); bw = obj as FairyGUIBaseWindow; bw.Copy(fairyGuiWindowInfo); bw.AssetLoaded = true; bw.Name = windowName; GComponent view = UIPackage.CreateObject(bw.FairyGuiWindowInfo.packageName, windowName).asCom; bw.SetWindowView(view); _windowList.Add(bw); bw.Init(); AfterOpenWindow(bw, sourceData); }
/// <summary> /// 销毁所有窗体 /// </summary> private void DestroyAllWindow() { var bw = _showWindowList.First; FairyGUIBaseWindow view = null; while (bw != null) { view = bw.Value; view.OnClose(); view.Hide(); bw = bw.Next; } _showWindowList.Clear(); _fairyGUIPackageManager.RemoveAllPackage(); }
protected void AfterOpenWindow(FairyGUIBaseWindow bw, object sourceData) { if (!bw.AssetLoaded) { _fairyGUIPackageManager.ReloadAssets(bw.FairyGuiWindowInfo.packageName); } if (!bw.HasOpen) { _showWindowList.AddLast(bw); bw.HasOpen = true; bw.OnOpen(sourceData); bw.Show(); } else { bw.OnResume(); } }
/// <summary> /// 暂时隐藏窗体 /// </summary> /// <param name="FairyGUIWindowName">窗体类型枚举</param> public void HideWindow(Type FairyGUIWindowType, bool isHide = true, bool unLoadAssets = false) { FairyGUIBaseWindow bw = GetFairyGUIBaseWindow(FairyGUIWindowType); if (bw == null) { Debug.LogError("要关闭的不是窗体,请检查HideWindow函数的参数是否为FairyGUIBaseWindow的子类并且已在注册表注册!"); return; } bw = null; foreach (var view in _showWindowList) { if (view.Name == FairyGUIWindowType.Name) { bw = view; break; } } if (bw != null) { if (isHide) { bw.OnClose(); bw.Hide(); bw.HasOpen = false; _showWindowList.Remove(bw); } else { bw.OnPause(); unLoadAssets = false; } if (unLoadAssets) { _fairyGUIPackageManager.UnloadAssets(bw.FairyGuiWindowInfo.packageName); bw.AssetLoaded = false; } } }