Пример #1
0
        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);
        }