Esempio n. 1
0
    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));
    }
Esempio n. 2
0
    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);
    }