protected override void processIn(UGUIProcessData data)
    {
        var classInfo = data.classInfo;

        if (data.Nodetype == typeof(GenWordType))
        {
            return;
        }

        var fieldInfo = UGUIGenUtil.AddPublicField(classInfo, data.ComponentName, data.NodeTypeStr
                                                   + "_" + UGUIGenUtil.GetNodeName(data.GameObjectName));

        var resetMethod = UGUIGenUtil.AddOrGetResetMethod(data.classInfo);

        StringBuilder sb = new StringBuilder();

        sb.Append(fieldInfo.name);
        sb.Append(" = transform");

        foreach (var node in data.Orders)
        {
            sb.Append(string.Format(".GetChild({0}}", node));
        }

        sb.Append(string.Format(".GetComponent<{0}>();", data.ComponentName));
        resetMethod.codeLines.Add(sb.ToString());

        if (data.Nodetype == typeof(Button))
        {
            var eventFieldInfo = UGUIGenUtil.AddPublicField(classInfo, "UIDele.Dele", "On" +
                                                            UGUIGenUtil.GetNodeName(data.GameObjectName) + "Callback");
            if (eventFieldInfo == null)
            {
                return;
            }

            GenMethodInfo clickMethod = new GenMethodInfo();
            clickMethod.returnType = "void";
            clickMethod.name       = "On" + UGUIGenUtil.GetNodeName(data.GameObjectName) + "Click";
            clickMethod.flags     |= GenBindingFlags.Private;
            clickMethod.args.Add(new GenArgumentInfo()
            {
                name = "go", type = "GameObject"
            });
            clickMethod.codeLines.Add(string.Format("if ({0} != null)", eventFieldInfo.name));
            clickMethod.codeLines.Add(string.Format("   {0}()", eventFieldInfo.name));
            classInfo.methods.Add(clickMethod.name, clickMethod);

            var openMethod = UGUIGenUtil.GetAwakeMethod(classInfo);
            openMethod.codeLines.Add(string.Format("UIEventListener_UGUI.Get({0}.gameObject).onClick = {1}", fieldInfo.name, clickMethod.name));
        }
    }
Esempio n. 2
0
    public static void AddErrMsgInResetMethod(GenClassInfo genClassInfo)
    {
        var awakeMethod           = UGUIGenUtil.AddOrGetResetMethod(genClassInfo);
        List <GenFieldInfo> props = new List <GenFieldInfo>();

        for (int i = 0; i < genClassInfo.fields.Count; i++)
        {
            if (genClassInfo.fields[i].type != "UIDele.Dele")
            {
                props.Add(genClassInfo.fields[i]);
            }
        }

        if (props.Count == 0)
        {
            return;
        }

        StringBuilder sb = new StringBuilder();

        sb.Append("if(");
        bool first = true;

        foreach (var prop in props)
        {
            if (first)
            {
                first = false;
            }
            else
            {
                sb.Append("||");
            }
            sb.Append(prop.name + "== null");
        }
        sb.Append(")");
        awakeMethod.codeLines.Add(sb.ToString());
        awakeMethod.codeLines.Add(" Debug.LogError(\"节点有null,请重新生成代码\");");
    }
 protected override void processAfterIn(UGUIProcessData data)
 {
     UGUIGenUtil.AddOrGetResetMethod(data.classInfo);
 }