private string GenCodeFromTemplate(Transform tran, string className, string tmplPath) { string template = File.ReadAllText(tmplPath); System.Text.StringBuilder paramsDeclaredStr = new System.Text.StringBuilder(); System.Text.StringBuilder paramsAssignmentStr = new System.Text.StringBuilder(); System.Text.StringBuilder bindEventStr = new System.Text.StringBuilder(); System.Text.StringBuilder eventFunctionDefineStr = new System.Text.StringBuilder(); var defines = tran.GetComponentsInChildren <KUIPropertyDefine>(true); for (int i = 0; i < defines.Length; i++) { defines[i].enabled = false; string typeName = defines[i].varType; string varName = defines[i].varName; string summaryStr = defines[i].varSummary; string childPath = AnimationUtility.CalculateTransformPath(defines[i].transform, tran); if (string.IsNullOrEmpty(typeName)) { //在这里逐步补充相应的类型 if (defines[i].GetComponent <Button>()) { typeName = typeof(Button).Name; string clickFuncName = "OnClick" + varName.Substring(0, 1).ToUpper() + varName.Substring(1); bindEventStr.Append(varName + ".AddClickListener(" + clickFuncName + ");\r\n "); eventFunctionDefineStr.Append("private void " + clickFuncName + "()\r\n {\r\n }\r\n "); } else if (defines[i].GetComponent <Image>()) { typeName = typeof(Image).Name; } else if (defines[i].GetComponent <Text>()) { typeName = typeof(Text).Name; } else { typeName = typeof(Transform).Name; KLogger.LogError("没有添加要处理的类型,使用默认类型|Transform|", defines[i].gameObject); } } paramsDeclaredStr.AppendFormat("\r\n /// <summary>\r\n /// {2}\r\n /// </summary>\r\n private {0} {1};\r\n", typeName, varName, summaryStr); if (typeof(Transform).Name.Equals(typeName)) { paramsAssignmentStr.AppendFormat(" {1} = tran.GetComponent<{0}>();\r\n", typeName, varName); } else { paramsAssignmentStr.AppendFormat(" {1} = tran.GetComponentByName<{0}>(\"{2}\");\r\n", typeName, varName, childPath); } } template = template.Replace("__CLASSNAME__", className); template = template.Replace("__PARAMS_DECLARED__", paramsDeclaredStr.ToString()); template = template.Replace("__PARAMS_ASSIGNMENT__", paramsAssignmentStr.ToString()); template = template.Replace("//BIND_EVENT_STATEMENT//", bindEventStr.ToString()); template = template.Replace("//EVENT_FUNCTION_DEFINE//", eventFunctionDefineStr.ToString()); return(template); }