public static T Open <T>(string packageName, string uiName) where T : GUIBase { GUIBase gui = GetView <T>(uiName); if (null != gui) { gui.Start(); return(gui as T); } return(CreateView <T>(packageName, uiName)); }
private static T CreateView <T>(string packageName, string uiName) where T : GUIBase { GUIBase view = System.Activator.CreateInstance(typeof(T)) as GUIBase; if (view == null) { return(null); } string packageBundleName = string.Format("ui/{0}.bundle", packageName.ToLower()); LoadedAssetBundle loadedassetBundle = AssetLoadManager.LoadAssetBundle(packageBundleName); if (loadedassetBundle == null && AssetLoadManager.SimulateAssetBundleInEditor == false) { return(null); } PackageInfo package; if (!packageDic.TryGetValue(packageName, out package)) { package = new PackageInfo(packageName); packageDic.Add(packageName, package); } else { package.referencedCount++; } UIPackage.AddPackage(packageName, (string name, string extension, System.Type type) => { if (loadedassetBundle != null) { return(loadedassetBundle.assetBundle.LoadAsset(name, type)); } else if (AssetLoadManager.SimulateAssetBundleInEditor) { return(AssetLoadManager.LoadAsset(packageBundleName, name, type)); } return(null); }); view.uiName = uiName; view.packageName = packageName; view.Start(); uiViewDic.Add(uiName, view); return(view as T); }