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); }