/// <summary> /// 创建脚本 /// </summary> private static void UiPanelAddScripts() { formConfig = LabTools.GetConfig <UIFormConfig>(false, "/StreamingAssets/GameData/"); foreach (var item in formConfig.PanleKeys) { BuildClass(item.Key); } }
private static void Setup() { formConfig = LabTools.GetConfig <UIFormConfig>(false, "/StreamingAssets/GameData/"); Debug.Log("生成UI"); Path = new Dictionary <string, string>(); #region 生成UIRoot var UIRoot = new GameObject("UiRoot"); UIRoot.AddComponent <UIController>(); UIRoot.layer = LayerMask.NameToLayer("UI"); #endregion #region 生成Canvas var UICanvas = new GameObject("Canvas"); UICanvas.transform.SetParent(UIRoot.transform); UICanvas.AddComponent <Canvas>().renderMode = RenderMode.ScreenSpaceOverlay; var canvasScaler = UICanvas.AddComponent <CanvasScaler>(); canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize; canvasScaler.referenceResolution = new Vector2(1920, 1080); UICanvas.AddComponent <GraphicRaycaster>(); UICanvas.layer = LayerMask.NameToLayer("UI"); #endregion #region 生成EventSystem var eventSystem = new GameObject("EventSystem"); eventSystem.transform.SetParent(UIRoot.transform); eventSystem.AddComponent <EventSystem>(); eventSystem.AddComponent <StandaloneInputModule>(); eventSystem.layer = LayerMask.NameToLayer("UI"); #endregion #region 生成Panle 根据配置表来,每生成一个都需要做成预设体 foreach (var item in formConfig.PanleKeys) { GameObject PanleObject = Instantiate(Resources.Load("UiFrameWorkPrefabs/Panel")) as GameObject; PanleObject.gameObject.name = item.Key; PanleObject.transform.SetParent(UICanvas.transform, false); PanleObject.gameObject.AddComponent(LabTools.GetScriptType(item.Key)); foreach (PanleData.Data Data in item.Value) { GameObject UiObject = Instantiate(Resources.Load("UiFrameWorkPrefabs/" + Data.UIFormName)) as GameObject; UiObject.name = Data.UIObjectName; UiObject.transform.SetParent(PanleObject.transform); UiObject.transform.localPosition = new Vector3(0, 0, 0); } WriteFolder(Application.dataPath + "/Resources/" + "UiPanlePrefabs/"); var Folder = Application.dataPath + "/Resources/" + "UiPanlePrefabs/"; string FindPrefabsPath = "UiPanlePrefabs/" + item.Key; Path.Add(item.Key, FindPrefabsPath); var FilePath = Folder + item.Key + ".prefab"; PrefabUtility.SaveAsPrefabAsset(PanleObject, FilePath); DestroyImmediate(PanleObject, false); } #endregion WriteFolder(Application.dataPath + "/StreamingAssets/GameData/" + "PanleDatas/"); PanleDatas panleDatas = new PanleDatas(); panleDatas.PanelValue = Path; LabTools.WriteData(panleDatas, "Panle", true, "/StreamingAssets/GameData/"); WriteFolder(Application.dataPath + "/Resources/" + "UiRoot/"); var savedFilePath = Application.dataPath + "/Resources/" + "UiRoot/" + "UIRoot.prefab"; PrefabUtility.SaveAsPrefabAssetAndConnect(UIRoot, savedFilePath, InteractionMode.AutomatedAction); }