Exemplo n.º 1
0
        public static GameObject GenerateUI(string spriteFolderPath, Canvas canvas, Dictionary <string, Type> layerImportTypes, UIInfo uiInfo)
        {
            if (layerImportTypes == null)
            {
                return(null);
            }
            mechine = new AssemblerStateMechine();
            mechine.spriteFolderPath   = spriteFolderPath;
            mechine.uiSize             = PreferHelper.uiSize;
            mechine.canvas             = canvas;
            mechine.fontFolderPath     = PreferHelper.fontFolderPath;
            mechine.textureFolderPath  = PreferHelper.textureFolderPath;
            mechine.materialFolderPath = PreferHelper.materialFolderPath;
            mechine.RegistEmptyImprot(Activator.CreateInstance(emptyImporter) as ILayerImport);
            using (var enumerator = layerImportTypes.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    var current = enumerator.Current;
                    if (typeof(ILayerImport).IsAssignableFrom(current.Value))
                    {
                        var instence = Activator.CreateInstance(current.Value) as ILayerImport;
                        if (instence != null)
                        {
                            mechine.RegistLayerimport(current.Key, instence);
                        }
                    }
                }
            }
            if (mechine.canvas != null)
            {
                Screen.SetResolution(PreferHelper.uiSize.x, PreferHelper.uiSize.y, false);
#if UNITY_EDITOR
                var ok = CheckGameViewSize(PreferHelper.uiSize);
                if (!ok)
                {
                    var @continue = UnityEditor.EditorUtility.DisplayDialog("屏幕比例和配制不一致:" + PreferHelper.uiSize.ToString(), "继续生成会造成坐标不正确", "继续", "取消");
                    if (!@continue)
                    {
                        return(null);
                    }
                }
#endif
                return(mechine.GenerateUI(uiInfo));
            }
            return(null);
        }