You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
590 lines
21 KiB
590 lines
21 KiB
using UnityEditor; |
|
using System.IO; |
|
using System.Text; |
|
using System.Collections.Generic; |
|
using System.Linq; |
|
using System.Text.RegularExpressions; |
|
using UnityEngine; |
|
|
|
using ET; |
|
using NUnit.Framework; |
|
|
|
public partial class UICodeSpawner |
|
{ |
|
static public void SpawnEUICode(GameObject gameObject) |
|
{ |
|
if (null == gameObject) |
|
{ |
|
Debug.LogError("UICode Select GameObject is null!"); |
|
return; |
|
} |
|
|
|
try |
|
{ |
|
string uiName = gameObject.name; |
|
if (uiName.StartsWith(UIPanelPrefix)) |
|
{ |
|
Debug.LogWarning($"----------开始生成Dlg{uiName} 相关代码 ----------"); |
|
SpawnDlgCode(gameObject); |
|
Debug.LogWarning($"生成Dlg{uiName} 完毕!!!"); |
|
return; |
|
} |
|
else if(uiName.StartsWith(CommonUIPrefix)) |
|
{ |
|
Debug.LogWarning($"-------- 开始生成子UI: {uiName} 相关代码 -------------"); |
|
SpawnSubUICode(gameObject); |
|
Debug.LogWarning($"生成子UI: {uiName} 完毕!!!"); |
|
return; |
|
} |
|
else if (uiName.StartsWith(UIItemPrefix)) |
|
{ |
|
Debug.LogWarning($"-------- 开始生成滚动列表项: {uiName} 相关代码 -------------"); |
|
SpawnLoopItemCode(gameObject); |
|
Debug.LogWarning($" 开始生成滚动列表项: {uiName} 完毕!!!"); |
|
return; |
|
} |
|
Debug.LogError($"选择的预设物不属于 Dlg, 子UI,滚动列表项,请检查 {uiName}!!!!!!"); |
|
} |
|
finally |
|
{ |
|
Path2WidgetCachedDict?.Clear(); |
|
Path2WidgetCachedDict = null; |
|
} |
|
} |
|
|
|
|
|
static public void SpawnDlgCode(GameObject gameObject) |
|
{ |
|
Path2WidgetCachedDict?.Clear(); |
|
Path2WidgetCachedDict = new Dictionary<string, List<Component>>(); |
|
|
|
FindAllWidgets(gameObject.transform, ""); |
|
|
|
SpawnCodeForDlg(gameObject); |
|
SpawnCodeForDlgEventHandle(gameObject); |
|
SpawnCodeForDlgModel(gameObject); |
|
|
|
SpawnCodeForDlgBehaviour(gameObject); |
|
SpawnCodeForDlgComponentBehaviour(gameObject); |
|
|
|
AssetDatabase.Refresh(); |
|
} |
|
|
|
static void SpawnCodeForDlg(GameObject gameObject) |
|
{ |
|
string strDlgName = gameObject.name; |
|
string strFilePath = Application.dataPath + "/../Codes/HotfixView/Demo/UI/" + strDlgName ; |
|
|
|
|
|
if ( !System.IO.Directory.Exists(strFilePath) ) |
|
{ |
|
System.IO.Directory.CreateDirectory(strFilePath); |
|
} |
|
|
|
strFilePath = Application.dataPath + "/../Codes/HotfixView/Demo/UI/" + strDlgName + "/" + strDlgName + "System.cs"; |
|
if(System.IO.File.Exists(strFilePath)) |
|
{ |
|
Debug.LogError("已存在 " + strDlgName + "System.cs,将不会再次生成。"); |
|
return; |
|
} |
|
|
|
StreamWriter sw = new StreamWriter(strFilePath, false, Encoding.UTF8); |
|
StringBuilder strBuilder = new StringBuilder(); |
|
strBuilder.AppendLine("using System.Collections;") |
|
.AppendLine("using System.Collections.Generic;") |
|
.AppendLine("using System;") |
|
.AppendLine("using UnityEngine;") |
|
.AppendLine("using UnityEngine.UI;\r\n"); |
|
|
|
strBuilder.AppendLine("namespace ET"); |
|
strBuilder.AppendLine("{"); |
|
|
|
strBuilder.AppendFormat("\tpublic static class {0}\r\n", strDlgName + "System"); |
|
strBuilder.AppendLine("\t{"); |
|
strBuilder.AppendLine(""); |
|
|
|
|
|
strBuilder.AppendFormat("\t\tpublic static void RegisterUIEvent(this {0} self)\n",strDlgName) |
|
.AppendLine("\t\t{") |
|
.AppendLine("\t\t ") |
|
.AppendLine("\t\t}") |
|
.AppendLine(); |
|
|
|
|
|
strBuilder.AppendFormat("\t\tpublic static void ShowWindow(this {0} self, Entity contextData = null)\n", strDlgName); |
|
strBuilder.AppendLine("\t\t{"); |
|
|
|
strBuilder.AppendLine("\t\t}") |
|
.AppendLine(); |
|
|
|
strBuilder.AppendLine("\t\t \r\n"); |
|
|
|
strBuilder.AppendLine("\t}"); |
|
strBuilder.AppendLine("}"); |
|
|
|
sw.Write(strBuilder); |
|
sw.Flush(); |
|
sw.Close(); |
|
} |
|
|
|
|
|
static void SpawnCodeForDlgEventHandle(GameObject gameObject) |
|
{ |
|
string strDlgName = gameObject.name; |
|
string strFilePath = Application.dataPath + "/../Codes/HotfixView/Demo/UI/" + strDlgName + "/Event" ; |
|
|
|
|
|
if ( !System.IO.Directory.Exists(strFilePath) ) |
|
{ |
|
System.IO.Directory.CreateDirectory(strFilePath); |
|
} |
|
|
|
strFilePath = Application.dataPath + "/../Codes/HotfixView/Demo/UI/" + strDlgName + "/Event/" + strDlgName + "EventHandler.cs"; |
|
if(System.IO.File.Exists(strFilePath)) |
|
{ |
|
Debug.LogError("已存在 " + strDlgName + ".cs,将不会再次生成。"); |
|
return; |
|
} |
|
|
|
StreamWriter sw = new StreamWriter(strFilePath, false, Encoding.UTF8); |
|
StringBuilder strBuilder = new StringBuilder(); |
|
|
|
strBuilder.AppendLine("namespace ET"); |
|
strBuilder.AppendLine("{"); |
|
|
|
strBuilder.AppendFormat("\t[AUIEvent(WindowID.WindowID_{0})]\n",strDlgName.Substring(3)); |
|
strBuilder.AppendFormat("\tpublic class {0}EventHandler : IAUIEventHandler\r\n", strDlgName); |
|
strBuilder.AppendLine("\t{"); |
|
strBuilder.AppendLine(""); |
|
|
|
|
|
strBuilder.AppendLine("\t\tpublic void OnInitWindowCoreData(UIBaseWindow uiBaseWindow)") |
|
.AppendLine("\t\t{"); |
|
|
|
strBuilder.AppendFormat("\t\t uiBaseWindow.WindowData.windowType = UIWindowType.Normal; \r\n"); |
|
|
|
strBuilder.AppendLine("\t\t}") |
|
.AppendLine(); |
|
|
|
strBuilder.AppendLine("\t\tpublic void OnInitComponent(UIBaseWindow uiBaseWindow)") |
|
.AppendLine("\t\t{"); |
|
|
|
strBuilder.AppendFormat("\t\t uiBaseWindow.AddComponent<{0}ViewComponent>(); \r\n",strDlgName); |
|
strBuilder.AppendFormat("\t\t uiBaseWindow.AddComponent<{0}>(); \r\n",strDlgName); |
|
|
|
strBuilder.AppendLine("\t\t}") |
|
.AppendLine(); |
|
|
|
strBuilder.AppendLine("\t\tpublic void OnRegisterUIEvent(UIBaseWindow uiBaseWindow)") |
|
.AppendLine("\t\t{"); |
|
|
|
strBuilder.AppendFormat("\t\t uiBaseWindow.GetComponent<{0}>().RegisterUIEvent(); \r\n",strDlgName); |
|
|
|
strBuilder.AppendLine("\t\t}") |
|
.AppendLine(); |
|
|
|
|
|
strBuilder.AppendLine("\t\tpublic void OnShowWindow(UIBaseWindow uiBaseWindow, Entity contextData = null)") |
|
.AppendLine("\t\t{"); |
|
strBuilder.AppendFormat("\t\t uiBaseWindow.GetComponent<{0}>().ShowWindow(contextData); \r\n",strDlgName); |
|
strBuilder.AppendLine("\t\t}") |
|
.AppendLine(); |
|
|
|
|
|
strBuilder.AppendLine("\t\tpublic void OnHideWindow(UIBaseWindow uiBaseWindow)") |
|
.AppendLine("\t\t{"); |
|
|
|
strBuilder.AppendLine("\t\t}") |
|
.AppendLine(); |
|
|
|
|
|
strBuilder.AppendLine("\t\tpublic void BeforeUnload(UIBaseWindow uiBaseWindow)") |
|
.AppendLine("\t\t{"); |
|
|
|
strBuilder.AppendLine("\t\t}") |
|
.AppendLine(); |
|
|
|
strBuilder.AppendLine("\t}"); |
|
strBuilder.AppendLine("}"); |
|
|
|
sw.Write(strBuilder); |
|
sw.Flush(); |
|
sw.Close(); |
|
} |
|
|
|
|
|
static void SpawnCodeForDlgModel(GameObject gameObject) |
|
{ |
|
string strDlgName = gameObject.name; |
|
string strFilePath = Application.dataPath + "/../Codes/ModelView/Demo/UI/" + strDlgName ; |
|
|
|
|
|
if ( !System.IO.Directory.Exists(strFilePath) ) |
|
{ |
|
System.IO.Directory.CreateDirectory(strFilePath); |
|
} |
|
|
|
strFilePath = Application.dataPath + "/../Codes/ModelView/Demo/UI/" + strDlgName + "/" + strDlgName + ".cs"; |
|
if(System.IO.File.Exists(strFilePath)) |
|
{ |
|
Debug.LogError("已存在 " + strDlgName + ".cs,将不会再次生成。"); |
|
return; |
|
} |
|
|
|
StreamWriter sw = new StreamWriter(strFilePath, false, Encoding.UTF8); |
|
StringBuilder strBuilder = new StringBuilder(); |
|
|
|
strBuilder.AppendLine("namespace ET"); |
|
strBuilder.AppendLine("{"); |
|
|
|
|
|
strBuilder.AppendFormat("\tpublic class {0} :Entity,IAwake,IUILogic\r\n", strDlgName); |
|
strBuilder.AppendLine("\t{"); |
|
strBuilder.AppendLine(""); |
|
|
|
strBuilder.AppendLine("\t\tpublic "+strDlgName+"ViewComponent View { get => this.Parent.GetComponent<"+ strDlgName +"ViewComponent>();} \r\n"); |
|
|
|
strBuilder.AppendLine("\t\t \r\n"); |
|
strBuilder.AppendLine("\t}"); |
|
strBuilder.AppendLine("}"); |
|
|
|
sw.Write(strBuilder); |
|
sw.Flush(); |
|
sw.Close(); |
|
} |
|
|
|
|
|
static void SpawnCodeForDlgBehaviour(GameObject gameObject) |
|
{ |
|
if (null == gameObject) |
|
{ |
|
return; |
|
} |
|
string strDlgName = gameObject.name ; |
|
string strDlgComponentName = gameObject.name + "ViewComponent"; |
|
|
|
string strFilePath = Application.dataPath + "/../Codes/HotfixView/Demo/UIBehaviour/" + strDlgName; |
|
|
|
if ( !System.IO.Directory.Exists(strFilePath) ) |
|
{ |
|
System.IO.Directory.CreateDirectory(strFilePath); |
|
} |
|
strFilePath = Application.dataPath + "/../Codes/HotfixView/Demo/UIBehaviour/" + strDlgName + "/" + strDlgComponentName + "System.cs"; |
|
|
|
StreamWriter sw = new StreamWriter(strFilePath, false, Encoding.UTF8); |
|
|
|
|
|
StringBuilder strBuilder = new StringBuilder(); |
|
strBuilder.AppendLine() |
|
.AppendLine("using UnityEngine;"); |
|
strBuilder.AppendLine("using UnityEngine.UI;"); |
|
strBuilder.AppendLine("namespace ET"); |
|
strBuilder.AppendLine("{"); |
|
strBuilder.AppendLine("\t[ObjectSystem]"); |
|
strBuilder.AppendFormat("\tpublic class {0}AwakeSystem : AwakeSystem<{1}> \r\n", strDlgComponentName, strDlgComponentName); |
|
strBuilder.AppendLine("\t{"); |
|
strBuilder.AppendFormat("\t\tpublic override void Awake({0} self)\n",strDlgComponentName); |
|
strBuilder.AppendLine("\t\t{"); |
|
strBuilder.AppendLine("\t\t\tself.uiTransform = self.GetParent<UIBaseWindow>().uiTransform;"); |
|
strBuilder.AppendLine("\t\t}"); |
|
strBuilder.AppendLine("\t}"); |
|
strBuilder.AppendLine("\n"); |
|
|
|
|
|
strBuilder.AppendLine("\t[ObjectSystem]"); |
|
strBuilder.AppendFormat("\tpublic class {0}DestroySystem : DestroySystem<{1}> \r\n", strDlgComponentName, strDlgComponentName); |
|
strBuilder.AppendLine("\t{"); |
|
strBuilder.AppendFormat("\t\tpublic override void Destroy({0} self)",strDlgComponentName); |
|
strBuilder.AppendLine("\n\t\t{"); |
|
strBuilder.AppendFormat("\t\t\tself.DestroyWidget();\r\n"); |
|
strBuilder.AppendLine("\t\t}"); |
|
strBuilder.AppendLine("\t}"); |
|
strBuilder.AppendLine("}"); |
|
sw.Write(strBuilder); |
|
sw.Flush(); |
|
sw.Close(); |
|
} |
|
|
|
static void SpawnCodeForDlgComponentBehaviour(GameObject gameObject) |
|
{ |
|
if (null == gameObject) |
|
{ |
|
return; |
|
} |
|
string strDlgName = gameObject.name ; |
|
string strDlgComponentName = gameObject.name + "ViewComponent"; |
|
|
|
|
|
string strFilePath = Application.dataPath + "/../Codes/ModelView/Demo/UIBehaviour/" + strDlgName; |
|
if ( !System.IO.Directory.Exists(strFilePath) ) |
|
{ |
|
System.IO.Directory.CreateDirectory(strFilePath); |
|
} |
|
strFilePath = Application.dataPath + "/../Codes/ModelView/Demo/UIBehaviour/" + strDlgName + "/" + strDlgComponentName + ".cs"; |
|
StreamWriter sw = new StreamWriter(strFilePath, false, Encoding.UTF8); |
|
StringBuilder strBuilder = new StringBuilder(); |
|
strBuilder.AppendLine() |
|
.AppendLine("using UnityEngine;"); |
|
strBuilder.AppendLine("using UnityEngine.UI;"); |
|
strBuilder.AppendLine("namespace ET"); |
|
strBuilder.AppendLine("{"); |
|
strBuilder.AppendFormat("\tpublic class {0} : Entity,IAwake,IDestroy \r\n", strDlgComponentName) |
|
.AppendLine("\t{"); |
|
|
|
CreateWidgetBindCode(ref strBuilder, gameObject.transform); |
|
|
|
CreateDestroyWidgetCode(ref strBuilder); |
|
|
|
CreateDeclareCode(ref strBuilder); |
|
strBuilder.AppendFormat("\t\tpublic Transform uiTransform = null;\r\n"); |
|
strBuilder.AppendLine("\t}"); |
|
strBuilder.AppendLine("}"); |
|
|
|
sw.Write(strBuilder); |
|
sw.Flush(); |
|
sw.Close(); |
|
} |
|
|
|
|
|
public static void CreateDestroyWidgetCode( ref StringBuilder strBuilder) |
|
{ |
|
strBuilder.AppendFormat("\t\tpublic void DestroyWidget()"); |
|
strBuilder.AppendLine("\n\t\t{"); |
|
CreateDlgWidgetDisposeCode(ref strBuilder); |
|
strBuilder.AppendFormat("\t\t\tthis.uiTransform = null;\r\n"); |
|
strBuilder.AppendLine("\t\t}\n"); |
|
} |
|
|
|
|
|
public static void CreateDlgWidgetDisposeCode(ref StringBuilder strBuilder,bool isSelf = false) |
|
{ |
|
string pointStr = isSelf ? "self" : "this"; |
|
foreach (KeyValuePair<string, List<Component>> pair in Path2WidgetCachedDict) |
|
{ |
|
foreach (var info in pair.Value) |
|
{ |
|
Component widget = info; |
|
string strClassType = widget.GetType().ToString(); |
|
|
|
if (pair.Key.StartsWith(CommonUIPrefix)) |
|
{ |
|
strBuilder.AppendFormat("\t\t {0}.m_{1}?.Dispose();\r\n", pointStr,pair.Key.ToLower()); |
|
strBuilder.AppendFormat("\t\t {0}.m_{1} = null;\r\n", pointStr,pair.Key.ToLower()); |
|
continue; |
|
} |
|
|
|
string widgetName = widget.name + strClassType.Split('.').ToList().Last(); |
|
strBuilder.AppendFormat("\t\t {0}.m_{1} = null;\r\n", pointStr,widgetName); |
|
} |
|
|
|
} |
|
|
|
|
|
} |
|
|
|
public static void CreateWidgetBindCode(ref StringBuilder strBuilder, Transform transRoot) |
|
{ |
|
foreach (KeyValuePair<string, List<Component>> pair in Path2WidgetCachedDict) |
|
{ |
|
foreach (var info in pair.Value) |
|
{ |
|
Component widget = info; |
|
string strPath = GetWidgetPath(widget.transform, transRoot); |
|
string strClassType = widget.GetType().ToString(); |
|
string strInterfaceType = strClassType; |
|
|
|
if (pair.Key.StartsWith(CommonUIPrefix)) |
|
{ |
|
GetSubUIBaseWindowCode(ref strBuilder, pair.Key,strPath); |
|
continue; |
|
} |
|
string widgetName = widget.name + strClassType.Split('.').ToList().Last(); |
|
|
|
|
|
strBuilder.AppendFormat(" public {0} {1}\r\n", strInterfaceType, widgetName); |
|
strBuilder.AppendLine(" {"); |
|
strBuilder.AppendLine(" get"); |
|
strBuilder.AppendLine(" {"); |
|
|
|
strBuilder.AppendLine(" if (this.uiTransform == null)"); |
|
strBuilder.AppendLine(" {"); |
|
strBuilder.AppendLine(" Log.Error(\"uiTransform is null.\");"); |
|
strBuilder.AppendLine(" return null;"); |
|
strBuilder.AppendLine(" }"); |
|
|
|
if (transRoot.gameObject.name.StartsWith(UIItemPrefix)) |
|
{ |
|
strBuilder.AppendLine(" if (this.isCacheNode)"); |
|
strBuilder.AppendLine(" {"); |
|
strBuilder.AppendFormat(" if( this.m_{0} == null )\n" , widgetName); |
|
strBuilder.AppendLine(" {"); |
|
strBuilder.AppendFormat(" this.m_{0} = UIFindHelper.FindDeepChild<{2}>(this.uiTransform.gameObject,\"{1}\");\r\n", widgetName, strPath, strInterfaceType); |
|
strBuilder.AppendLine(" }"); |
|
strBuilder.AppendFormat(" return this.m_{0};\n" , widgetName); |
|
strBuilder.AppendLine(" }"); |
|
strBuilder.AppendLine(" else"); |
|
strBuilder.AppendLine(" {"); |
|
strBuilder.AppendFormat(" return UIFindHelper.FindDeepChild<{2}>(this.uiTransform.gameObject,\"{1}\");\r\n", widgetName, strPath, strInterfaceType); |
|
strBuilder.AppendLine(" }"); |
|
} |
|
else |
|
{ |
|
strBuilder.AppendFormat(" if( this.m_{0} == null )\n" , widgetName); |
|
strBuilder.AppendLine(" {"); |
|
strBuilder.AppendFormat(" this.m_{0} = UIFindHelper.FindDeepChild<{2}>(this.uiTransform.gameObject,\"{1}\");\r\n", widgetName, strPath, strInterfaceType); |
|
strBuilder.AppendLine(" }"); |
|
strBuilder.AppendFormat(" return this.m_{0};\n" , widgetName); |
|
} |
|
|
|
strBuilder.AppendLine(" }"); |
|
strBuilder.AppendLine(" }\n"); |
|
} |
|
} |
|
} |
|
|
|
public static void CreateDeclareCode(ref StringBuilder strBuilder) |
|
{ |
|
foreach (KeyValuePair<string,List<Component> > pair in Path2WidgetCachedDict) |
|
{ |
|
foreach (var info in pair.Value) |
|
{ |
|
Component widget = info; |
|
string strClassType = widget.GetType().ToString(); |
|
|
|
if ( pair.Key.StartsWith(CommonUIPrefix)) |
|
{ |
|
string subUIClassType = Regex.Replace(pair.Key, @"\d", ""); |
|
strBuilder.AppendFormat("\t\tprivate {0} m_{1} = null;\r\n", subUIClassType, pair.Key.ToLower()); |
|
continue; |
|
} |
|
|
|
string widgetName = widget.name + strClassType.Split('.').ToList().Last(); |
|
strBuilder.AppendFormat("\t\tprivate {0} m_{1} = null;\r\n", strClassType, widgetName); |
|
} |
|
|
|
} |
|
} |
|
|
|
public static void FindAllWidgets(Transform trans, string strPath) |
|
{ |
|
if (null == trans) |
|
{ |
|
return; |
|
} |
|
for (int nIndex= 0; nIndex < trans.childCount; ++nIndex) |
|
{ |
|
Transform child = trans.GetChild(nIndex); |
|
string strTemp = strPath+"/"+child.name; |
|
|
|
|
|
bool isSubUI = child.name.StartsWith(CommonUIPrefix); |
|
if (isSubUI || child.name.StartsWith(UIGameObjectPrefix)) |
|
{ |
|
List<Component> rectTransfomrComponents = new List<Component>(); |
|
rectTransfomrComponents.Add(child.GetComponent<RectTransform>()); |
|
Path2WidgetCachedDict.Add(child.name,rectTransfomrComponents); |
|
} |
|
else if (child.name.StartsWith(UIWidgetPrefix)) |
|
{ |
|
foreach (var uiComponent in WidgetInterfaceList) |
|
{ |
|
Component component = child.GetComponent(uiComponent); |
|
if (null == component) |
|
{ |
|
continue; |
|
} |
|
|
|
if ( Path2WidgetCachedDict.ContainsKey(child.name) ) |
|
{ |
|
Path2WidgetCachedDict[child.name].Add(component); |
|
continue; |
|
} |
|
|
|
List<Component> componentsList = new List<Component>(); |
|
componentsList.Add(component); |
|
Path2WidgetCachedDict.Add(child.name, componentsList); |
|
} |
|
} |
|
|
|
if (isSubUI) |
|
{ |
|
Debug.Log($"遇到子UI:{child.name},不生成子UI项代码"); |
|
continue; |
|
} |
|
FindAllWidgets(child, strTemp); |
|
} |
|
} |
|
|
|
static string GetWidgetPath(Transform obj, Transform root) |
|
{ |
|
string path = obj.name; |
|
|
|
while (obj.parent != null && obj.parent != root) |
|
{ |
|
obj = obj.transform.parent; |
|
path = obj.name + "/" + path; |
|
} |
|
return path; |
|
} |
|
|
|
|
|
static void GetSubUIBaseWindowCode(ref StringBuilder strBuilder,string widget,string strPath) |
|
{ |
|
|
|
string subUIClassType = Regex.Replace(widget, @"\d", ""); |
|
|
|
strBuilder.AppendFormat(" public {0} {1}\r\n", subUIClassType, widget ); |
|
strBuilder.AppendLine(" {"); |
|
strBuilder.AppendLine(" get"); |
|
strBuilder.AppendLine(" {"); |
|
|
|
strBuilder.AppendLine(" if (this.uiTransform == null)"); |
|
strBuilder.AppendLine(" {"); |
|
strBuilder.AppendLine(" Log.Error(\"uiTransform is null.\");"); |
|
strBuilder.AppendLine(" return null;"); |
|
strBuilder.AppendLine(" }"); |
|
|
|
strBuilder.AppendFormat(" if( this.m_{0} == null )\n" , widget.ToLower()); |
|
strBuilder.AppendLine(" {"); |
|
strBuilder.AppendFormat(" Transform subTrans = UIFindHelper.FindDeepChild<Transform>(this.uiTransform.gameObject,\"{0}\");\r\n", strPath); |
|
strBuilder.AppendFormat(" this.m_{0} = this.AddChild<{1},Transform>(subTrans);\r\n", widget.ToLower(),subUIClassType); |
|
strBuilder.AppendLine(" }"); |
|
strBuilder.AppendFormat(" return this.m_{0};\n" , widget.ToLower()); |
|
strBuilder.AppendLine(" }"); |
|
|
|
|
|
|
|
strBuilder.AppendLine(" }\n"); |
|
} |
|
|
|
|
|
static UICodeSpawner() |
|
{ |
|
WidgetInterfaceList = new List<string>(); |
|
WidgetInterfaceList.Add("Button"); |
|
WidgetInterfaceList.Add( "Text"); |
|
WidgetInterfaceList.Add("Input"); |
|
WidgetInterfaceList.Add("InputField"); |
|
WidgetInterfaceList.Add( "Scrollbar"); |
|
WidgetInterfaceList.Add("ToggleGroup"); |
|
WidgetInterfaceList.Add("Toggle"); |
|
WidgetInterfaceList.Add("Dropdown"); |
|
WidgetInterfaceList.Add("Slider"); |
|
WidgetInterfaceList.Add("ScrollRect"); |
|
WidgetInterfaceList.Add( "Image"); |
|
WidgetInterfaceList.Add("RawImage"); |
|
WidgetInterfaceList.Add("Canvas"); |
|
WidgetInterfaceList.Add("UIWarpContent"); |
|
WidgetInterfaceList.Add("LoopVerticalScrollRect"); |
|
WidgetInterfaceList.Add("LoopHorizontalScrollRect"); |
|
} |
|
|
|
private static Dictionary<string, List<Component> > Path2WidgetCachedDict =null; |
|
private static List<string> WidgetInterfaceList = null; |
|
private const string CommonUIPrefix = "ES"; |
|
private const string UIPanelPrefix = "Dlg"; |
|
private const string UIWidgetPrefix = "E"; |
|
private const string UIGameObjectPrefix = "EG"; |
|
private const string UIItemPrefix = "Item"; |
|
} |
|
|
|
|