public static void Generate(string generateFilePath, string behaviourName, string nameSpace, ElementCodeData elementCodeData) { var sw = new StreamWriter(generateFilePath, false, new UTF8Encoding(false)); var strBuilder = new StringBuilder(); var markType = elementCodeData.MarkedObjInfo.MarkObj.GetUIMarkType(); strBuilder.AppendLine("/****************************************************************************"); strBuilder.AppendFormat(" * {0}.{1} {2}\n", DateTime.Now.Year, DateTime.Now.Month, SystemInfo.deviceName); strBuilder.AppendLine(" ****************************************************************************/"); strBuilder.AppendLine(); strBuilder.AppendLine("using System;"); strBuilder.AppendLine("using System.Collections.Generic;"); strBuilder.AppendLine("using UnityEngine;"); strBuilder.AppendLine("using UnityEngine.UI;"); strBuilder.AppendLine("using QFramework;").AppendLine(); strBuilder.AppendLine("namespace " + nameSpace); strBuilder.AppendLine("{"); strBuilder.AppendFormat("\tpublic partial class {0} : {1}", behaviourName, markType == UIMarkType.Component ? "UIComponent" : "UIElement"); strBuilder.AppendLine(); strBuilder.AppendLine("\t{"); strBuilder.Append("\t\t").AppendLine("private void Awake()"); strBuilder.Append("\t\t").AppendLine("{"); strBuilder.Append("\t\t").AppendLine("}"); strBuilder.AppendLine("\t}"); strBuilder.Append("}"); sw.Write(strBuilder); sw.Flush(); sw.Close(); }
/// <summary> /// /// </summary> /// <param name="rootTrans"></param> /// <param name="curTrans"></param> /// <param name="transFullName"></param> private void FindAllMarkTrans(Transform curTrans, string transFullName, ElementCodeData parentElementCodeData = null) { foreach (Transform childTrans in curTrans) { IUIMark uiMark = childTrans.GetComponent <IUIMark>(); if (null != uiMark) { if (null == parentElementCodeData) { if (!mPanelCodeData.DicNameToIUIData.ContainsKey(uiMark.Transform.name)) { mPanelCodeData.DicNameToIUIData.Add(uiMark.Transform.name, uiMark); mPanelCodeData.DicNameToFullName.Add(uiMark.Transform.name, transFullName + childTrans.name); } else { Debug.LogError("Repeat key: " + childTrans.name); } } else { if (!parentElementCodeData.DicNameToIUIData.ContainsKey(uiMark.Transform.name)) { parentElementCodeData.DicNameToIUIData.Add(uiMark.Transform.name, uiMark); parentElementCodeData.DicNameToFullName.Add(uiMark.Transform.name, transFullName + childTrans.name); } else { Debug.LogError("Repeat key: " + childTrans.name); } } } if (uiMark is QUIElement) { ElementCodeData elementCodeData = new ElementCodeData(); elementCodeData.BehaviourName = uiMark.ComponentName; if (null == parentElementCodeData) { mPanelCodeData.ElementCodeDatas.Add(elementCodeData); } else { parentElementCodeData.ElementCodeDatas.Add(elementCodeData); } FindAllMarkTrans(childTrans, transFullName + childTrans.name + "/", elementCodeData); } else { FindAllMarkTrans(childTrans, transFullName + childTrans.name + "/", parentElementCodeData); } } }
private static void CreateUIElementCode(string generateDirPath, ElementCodeData elementCodeData) { UIElementCodeTemplate.Generate(generateDirPath + elementCodeData.BehaviourName + "Components.cs", elementCodeData.BehaviourName, GetProjectNamespace(), elementCodeData); foreach (var childElementCodeData in elementCodeData.ElementCodeDatas) { var elementDir = (generateDirPath + elementCodeData.BehaviourName + "/").CreateDirIfNotExists(); CreateUIElementCode(elementDir, childElementCodeData); } }
public static void Generate(string generateFilePath, string behaviourName, string nameSpace, ElementCodeData elementCodeData) { var sw = new StreamWriter(generateFilePath, false, Encoding.UTF8); var strBuilder = new StringBuilder(); strBuilder.AppendLine("/****************************************************************************"); strBuilder.AppendFormat(" * {0}.{1} {2}\n", DateTime.Now.Year, DateTime.Now.Month, SystemInfo.deviceName); strBuilder.AppendLine(" ****************************************************************************/"); strBuilder.AppendLine(); strBuilder.AppendLine("using UnityEngine;"); strBuilder.AppendLine("using UnityEngine.UI;"); strBuilder.AppendLine("using QFramework;"); strBuilder.AppendLine(); strBuilder.AppendLine("namespace " + nameSpace); strBuilder.AppendLine("{"); strBuilder.AppendFormat("\tpublic partial class {0}", behaviourName); strBuilder.AppendLine(); strBuilder.AppendLine("\t{"); foreach (var markInfo in elementCodeData.MarkedObjInfos) { var strUIType = markInfo.MarkObj.ComponentName; strBuilder.AppendFormat("\t\t[SerializeField] public {0} {1};\r\n", strUIType, markInfo.Name); } strBuilder.AppendLine(); strBuilder.Append("\t\t").AppendLine("public void Clear()"); strBuilder.Append("\t\t").AppendLine("{"); foreach (var markInfo in elementCodeData.MarkedObjInfos) { strBuilder.AppendFormat("\t\t\t{0} = null;\r\n", markInfo.Name); } strBuilder.Append("\t\t").AppendLine("}"); strBuilder.AppendLine(); strBuilder.Append("\t\t").AppendLine("public override string ComponentName"); strBuilder.Append("\t\t").AppendLine("{"); strBuilder.Append("\t\t\t"); strBuilder.AppendLine("get { return \"" + elementCodeData.MarkedObjInfo.MarkObj.ComponentName + "\";}"); strBuilder.Append("\t\t").AppendLine("}"); strBuilder.AppendLine("\t}"); strBuilder.AppendLine("}"); sw.Write(strBuilder); sw.Flush(); sw.Close(); }
private static void CreateUIElementCode(string generateDirPath, ElementCodeData elementCodeData) { var panelFilePathWhithoutExt = generateDirPath + elementCodeData.BehaviourName; if (File.Exists(panelFilePathWhithoutExt + ".cs") == false) { UIElementCodeTemplate.Generate(panelFilePathWhithoutExt + ".cs", elementCodeData.BehaviourName, UIKitSettingData.GetProjectNamespace(), elementCodeData); } UIElementCodeComponentTemplate.Generate(panelFilePathWhithoutExt + ".Designer.cs", elementCodeData.BehaviourName, UIKitSettingData.GetProjectNamespace(), elementCodeData); foreach (var childElementCodeData in elementCodeData.ElementCodeDatas) { var elementDir = (panelFilePathWhithoutExt + "/").CreateDirIfNotExists(); CreateUIElementCode(elementDir, childElementCodeData); } }
/// <summary> /// /// </summary> /// <param name="rootTrans"></param> /// <param name="curTrans"></param> /// <param name="transFullName"></param> private void FindAllMarkTrans(Transform curTrans, string transFullName, ElementCodeData parentElementCodeData = null) { foreach (Transform childTrans in curTrans) { var uiMark = childTrans.GetComponent <IMark>(); if (null != uiMark) { if (null == parentElementCodeData) { if (!mPanelCodeData.MarkedObjInfos.Any(markedObjInfo => markedObjInfo.Name.Equals(uiMark.Transform.name))) { mPanelCodeData.MarkedObjInfos.Add(new MarkedObjInfo { Name = uiMark.Transform.name, MarkObj = uiMark, PathToElement = PathToParent(childTrans, mPanelCodeData.PanelName) }); mPanelCodeData.DicNameToFullName.Add(uiMark.Transform.name, transFullName + childTrans.name); } else { Debug.LogError("Repeat key: " + childTrans.name); } } else { if (!parentElementCodeData.MarkedObjInfos.Any(markedObjInfo => markedObjInfo.Name.Equals(uiMark.Transform.name))) { parentElementCodeData.MarkedObjInfos.Add(new MarkedObjInfo() { Name = uiMark.Transform.name, MarkObj = uiMark, PathToElement = PathToParent(childTrans, parentElementCodeData.BehaviourName) }); parentElementCodeData.DicNameToFullName.Add(uiMark.Transform.name, transFullName + childTrans.name); } else { Debug.LogError("Repeat key: " + childTrans.name); } } if (uiMark.GetUIMarkType() != UIMarkType.DefaultUnityElement) { var elementCodeData = new ElementCodeData { BehaviourName = uiMark.ComponentName, MarkedObjInfo = new MarkedObjInfo { MarkObj = uiMark } }; if (null == parentElementCodeData) { mPanelCodeData.ElementCodeDatas.Add(elementCodeData); } else { parentElementCodeData.ElementCodeDatas.Add(elementCodeData); } FindAllMarkTrans(childTrans, transFullName + childTrans.name + "/", elementCodeData); } else { FindAllMarkTrans(childTrans, transFullName + childTrans.name + "/", parentElementCodeData); } } else { FindAllMarkTrans(childTrans, transFullName + childTrans.name + "/", parentElementCodeData); } } }
public static void Generate(string generateFilePath, string behaviourName, string nameSpace, ElementCodeData elementCodeData) { StreamWriter sw = new StreamWriter(generateFilePath, false, Encoding.UTF8); StringBuilder strBuilder = new StringBuilder(); strBuilder.AppendLine("using System;"); strBuilder.AppendLine("using System.Collections.Generic;"); strBuilder.AppendLine("using UnityEngine;"); strBuilder.AppendLine("using UnityEngine.UI;"); strBuilder.AppendLine(""); strBuilder.AppendLine(); strBuilder.AppendLine("namespace " + nameSpace); strBuilder.AppendLine("{"); strBuilder.AppendFormat("\tpublic class {0}Components : MonoBehaviour, IUIComponents", behaviourName); strBuilder.AppendLine(); strBuilder.AppendLine("\t{"); foreach (KeyValuePair <string, IUIMark> p in elementCodeData.DicNameToIUIData) { string strUIType = p.Value.ComponentName; strBuilder.AppendFormat("\t\t[SerializeField] public {0} {1};\r\n", strUIType, p.Key); } strBuilder.AppendLine(); strBuilder.Append("\t\t").AppendLine("public void Clear()"); strBuilder.Append("\t\t").AppendLine("{"); foreach (KeyValuePair <string, IUIMark> p in elementCodeData.DicNameToIUIData) { strBuilder.AppendFormat("\t\t\t{0} = null;\r\n", p.Key); } strBuilder.Append("\t\t").AppendLine("}").AppendLine(); strBuilder.AppendLine("\t}"); strBuilder.AppendLine("}"); sw.Write(strBuilder); sw.Flush(); sw.Close(); }
public static void Generate(string generateFilePath, string behaviourName, string nameSpace, ElementCodeData elementCodeData) { var sw = new StreamWriter(generateFilePath, false, Encoding.UTF8); var strBuilder = new StringBuilder(); strBuilder.AppendLine("using UnityEngine;"); strBuilder.AppendLine("using UnityEngine.UI;"); strBuilder.AppendLine(); strBuilder.AppendLine("namespace " + nameSpace); strBuilder.AppendLine("{"); strBuilder.AppendFormat("\tpublic partial class {0}", behaviourName); strBuilder.AppendLine(); strBuilder.AppendLine("\t{"); foreach (var markInfo in elementCodeData.MarkedObjInfos) { var strUIType = markInfo.MarkObj.ComponentName; strBuilder.AppendFormat("\t\t[SerializeField] public {0} {1};\r\n", strUIType, markInfo.Name); } strBuilder.AppendLine(); strBuilder.Append("\t\t").AppendLine("public void Clear()"); strBuilder.Append("\t\t").AppendLine("{"); foreach (var markInfo in elementCodeData.MarkedObjInfos) { strBuilder.AppendFormat("\t\t\t{0} = null;\r\n", markInfo.Name); } strBuilder.Append("\t\t").AppendLine("}").AppendLine(); strBuilder.AppendLine("\t}"); strBuilder.AppendLine("}"); sw.Write(strBuilder); sw.Flush(); sw.Close(); }