Пример #1
0
        private void RefreshTypeNames()
        {
            m_CurrentHotFormInfos = new List <HotFormInfo>();
            for (int i = 0; i < m_HotFormInfos.arraySize; i++)
            {
                HotFormInfo iLFormInfo = new HotFormInfo();
                iLFormInfo.Name             = m_HotFormInfos.GetArrayElementAtIndex(i).FindPropertyRelative("m_Name").stringValue;
                iLFormInfo.TransformName    = m_HotFormInfos.GetArrayElementAtIndex(i).FindPropertyRelative("m_TransformName").stringValue;
                iLFormInfo.HotAttributeType = (HotAttributeType)m_HotFormInfos.GetArrayElementAtIndex(i).FindPropertyRelative("m_HotAttributeType").enumValueIndex;
                iLFormInfo.Trans            = (Transform)m_HotFormInfos.GetArrayElementAtIndex(i).FindPropertyRelative("m_Transform").objectReferenceValue;

                m_CurrentHotFormInfos.Add(iLFormInfo);
            }
        }
Пример #2
0
        private void AddItem()
        {
            bool        invalid      = true;
            string      errorMseeage = string.Empty;
            HotFormInfo hotFormInfo  = new HotFormInfo();

            if (m_AddTransform == null)
            {
                invalid      = false;
                errorMseeage = "Add transform is invalid!";
            }
            else
            {
                string transname = m_AddTransform.name;
                for (int i = 0; i < m_CurrentHotFormInfos.Count; i++)
                {
                    if (transname == m_CurrentHotFormInfos[i].TransformName)
                    {
                        errorMseeage = "Transform name is already exist!";
                        invalid      = false;
                        break;
                    }
                }

                if (invalid)
                {
                    hotFormInfo.TransformName = transname;
                    hotFormInfo.Trans         = m_AddTransform;

                    if (m_AddTransform.GetComponent <Dropdown>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.Dropdown;
                    }
                    else if (m_AddTransform.GetComponent <InputField>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.InputField;
                    }
                    else if (m_AddTransform.GetComponent <Mask>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.Mask;
                    }
                    else if (m_AddTransform.GetComponent <Toggle>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.Toggle;
                    }
                    else if (m_AddTransform.GetComponent <ScrollRect>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.ScrollRect;
                    }
                    else if (m_AddTransform.GetComponent <Scrollbar>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.Scrollbar;
                    }
                    else if (m_AddTransform.GetComponent <Slider>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.Slider;
                    }
                    else if (m_AddTransform.GetComponent <LocalizationText>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.LocalizationText;
                    }
                    else if (m_AddTransform.GetComponent <LocalizationImage>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.LocalizationImage;
                    }
                    else if (m_AddTransform.GetComponent <Button>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.Button;
                    }
                    else if (m_AddTransform.GetComponent <RawImage>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.RawImage;
                    }
                    else if (m_AddTransform.GetComponent <Image>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.Image;
                    }
                    else if (m_AddTransform.GetComponent <Text>() != null)
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.Text;
                    }
                    else
                    {
                        hotFormInfo.HotAttributeType = HotAttributeType.Unknow;
                    }
                }
            }

            if (invalid)
            {
                m_CurrentHotFormInfos.Add(hotFormInfo);
                DrawAllHotFormInfo();
                m_AddTransform = null;
            }
            else
            {
                Error(errorMseeage);
            }
        }
Пример #3
0
        private void DrawILFormInfo(HotFormInfo iLFormInfo, int id)
        {
            GUILayout.BeginHorizontal("box");
            {
                if (GUILayout.Button("", "ToggleMixed", GUILayout.Width(20f), GUILayout.Height(16f)))
                {
                    remove   = true;
                    removeId = id;
                }

                GUILayout.BeginVertical("box");
                {
                    string oldname = iLFormInfo.Name;
                    iLFormInfo.Name = EditorGUILayout.TextField(iLFormInfo.Name, GUILayout.MinWidth(30f), GUILayout.MaxWidth(150f));
                    if (oldname != iLFormInfo.Name)
                    {
                        change = true;
                    }
                }
                GUILayout.EndVertical();

                GUILayout.BeginVertical("box");
                {
                    string newtransname = EditorGUILayout.TextField(iLFormInfo.TransformName, GUILayout.MinWidth(30f), GUILayout.MaxWidth(150f));
                    if (newtransname != iLFormInfo.TransformName)
                    {
                        bool nameinvalid = true;
                        for (int i = 0; i < m_CurrentHotFormInfos.Count; i++)
                        {
                            if (newtransname == m_CurrentHotFormInfos[i].TransformName)
                            {
                                nameinvalid = false;
                                break;
                            }
                        }
                        if (nameinvalid)
                        {
                            iLFormInfo.TransformName = newtransname;
                            change = true;
                        }
                        else
                        {
                            Error("Transform name is already exist!");
                        }
                    }
                }
                GUILayout.EndVertical();

                GUILayout.BeginVertical("box");
                {
                    Transform oldtransform = iLFormInfo.Trans;
                    iLFormInfo.Trans = (Transform)EditorGUILayout.ObjectField(iLFormInfo.Trans, typeof(Transform), true, GUILayout.MinWidth(40f));
                    if (oldtransform != iLFormInfo.Trans)
                    {
                        change = true;
                    }
                }
                GUILayout.EndVertical();

                GUILayout.BeginVertical("box");
                {
                    HotAttributeType oldhotAttributeType = iLFormInfo.HotAttributeType;
                    iLFormInfo.HotAttributeType = (HotAttributeType)EditorGUILayout.EnumPopup(iLFormInfo.HotAttributeType, GUILayout.MinWidth(70f));
                    if (oldhotAttributeType != iLFormInfo.HotAttributeType)
                    {
                        change = true;
                    }
                }
                GUILayout.EndVertical();
            }
            GUILayout.EndHorizontal();
        }
Пример #4
0
        static void CreateTempUIForm()
        {
            if (Selection.transforms.Length == 0)
            {
                return;
            }

            Transform trans = Selection.transforms[0];

            HotfixForm hotfixForm = trans.GetComponent <HotfixForm>();

            if (hotfixForm == null)
            {
                Debug.LogError("该UI上没有HotfixForm脚本");
                return;
            }

            string viewName = trans.gameObject.name;

            HotFormInfo[] hotFormInfos = hotfixForm.HotFormInfos;

            int len = hotFormInfos.Length;

            StringBuilder sbr = new StringBuilder();

            sbr.Append("using UnityEngine;\r\n");
            sbr.Append("using UnityEngine.UI;\r\n");
            sbr.Append("using ZJY.Framework;\r\n");
            sbr.Append("\r\n");
            sbr.Append("namespace Hotfix\r\n");
            sbr.Append("{\r\n");
            sbr.AppendFormat("    public class {0}View : HotUIForm\r\n", viewName);
            sbr.Append("    {\r\n");

            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 窗口控制器\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.AppendFormat("        private {0}Ctrl m_{0}Ctrl;\r\n", viewName);
            sbr.Append("\r\n");

            sbr.Append("        #region 组件\r\n");
            for (int i = 0; i < len; i++)
            {
                HotFormInfo hotFormInfo = hotFormInfos[i];
                sbr.Append("        /// <summary>\r\n");
                sbr.AppendFormat("        /// {0}\r\n", hotFormInfo.Name);
                sbr.Append("        /// </summary>\r\n");
                if (hotFormInfo.HotAttributeType == HotAttributeType.Unknow)
                {
                    sbr.AppendFormat("        public {0} {1}\r\n", "Transform", hotFormInfo.Trans.name);
                }
                else
                {
                    sbr.AppendFormat("        public {0} {1}\r\n", hotFormInfo.HotAttributeType.ToString(), hotFormInfo.Trans.name);
                }

                sbr.Append("        {\r\n");
                sbr.Append("            get;\r\n");
                sbr.Append("            private set;\r\n");
                sbr.Append("        }\r\n");
                sbr.Append("\r\n");
            }
            sbr.Append("        #endregion\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面初始化\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"uiForm\">真正的UI窗口</param>\r\n");
            sbr.Append("        /// <param name=\"userData\">用户数据</param>\r\n");
            sbr.Append("        public override void OnInit(HotfixForm uiForm, object userData)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("            base.OnInit(uiForm, userData);\r\n");

            for (int i = 0; i < len; i++)
            {
                HotFormInfo hotFormInfo = hotFormInfos[i];
                if (hotFormInfo.HotAttributeType == HotAttributeType.Unknow)
                {
                    sbr.AppendFormat("            {0} = uiForm.GetTransType({1}) as {2};\r\n", hotFormInfo.TransformName.ToString(), i.ToString(), "Transform");
                }
                else
                {
                    sbr.AppendFormat("            {0} = uiForm.GetTransType({1}) as {2};\r\n", hotFormInfo.TransformName.ToString(), i.ToString(), hotFormInfo.HotAttributeType.ToString());
                }
            }

            sbr.AppendFormat("            m_{0}Ctrl = new {0}Ctrl();\r\n", viewName);
            sbr.AppendFormat("            m_{0}Ctrl.OnInit(this, userData);\r\n", viewName);
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面打开\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"userData\">用户数据</param>\r\n");
            sbr.Append("        public override void OnOpen(object userData)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("            base.OnOpen(userData);\r\n");
            sbr.AppendFormat("            m_{0}Ctrl.OnOpen(userData);\r\n", viewName);
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面关闭\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"userData\">用户数据</param>\r\n");
            sbr.Append("        public override void OnClose(object userData)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("            base.OnClose(userData);\r\n");
            sbr.AppendFormat("            m_{0}Ctrl.OnClose(userData);\r\n", viewName);
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面暂停\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        public override void OnPause()\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("            base.OnPause();\r\n");
            sbr.AppendFormat("            m_{0}Ctrl.OnPause();\r\n", viewName);
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面暂停恢复\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"userData\">用户数据</param>\r\n");
            sbr.Append("        public override void OnResume(object userData)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("            base.OnResume(userData);\r\n");
            sbr.AppendFormat("            m_{0}Ctrl.OnResume(userData);\r\n", viewName);
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面遮挡\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"userData\">用户数据</param>\r\n");
            sbr.Append("        public override void OnCover(object userData)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("            base.OnCover(userData);\r\n");
            sbr.AppendFormat("            m_{0}Ctrl.OnCover(userData);\r\n", viewName);
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面遮挡恢复\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        public override void OnReveal()\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("            base.OnReveal();\r\n");
            sbr.AppendFormat("            m_{0}Ctrl.OnReveal();\r\n", viewName);
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面激活\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"userData\">用户数据</param>\r\n");
            sbr.Append("        public override void OnRefocus(object userData)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("            base.OnRefocus(userData);\r\n");
            sbr.AppendFormat("            m_{0}Ctrl.OnRefocus(userData);\r\n", viewName);
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面轮询\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"deltaTime\">逻辑流逝时间,以秒为单位</param>\r\n");
            sbr.Append("        /// <param name=\"unscaledDeltaTime\">真实流逝时间,以秒为单位</param>\r\n");
            sbr.Append("        public override void OnUpdate(float deltaTime, float unscaledDeltaTime)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("            base.OnUpdate(deltaTime, unscaledDeltaTime);\r\n");
            sbr.AppendFormat("            m_{0}Ctrl.OnUpdate(deltaTime, unscaledDeltaTime);\r\n", viewName);
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面深度改变\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"uiGroupDepth\">界面组深度</param>\r\n");
            sbr.Append("        /// <param name=\"depthInUIGroup\">界面在界面组中的深度</param>\r\n");
            sbr.Append("        public override void OnDepthChanged(int uiGroupDepth, int depthInUIGroup)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("            base.OnDepthChanged(uiGroupDepth, depthInUIGroup);\r\n");
            sbr.AppendFormat("            m_{0}Ctrl.OnDepthChanged(uiGroupDepth, depthInUIGroup);\r\n", viewName);
            sbr.Append("        }\r\n");
            sbr.Append("    }\r\n");
            sbr.Append("}\r\n");

            string viewpath = Application.dataPath + "/../Hotfix/Module/UI/Temp/" + viewName + "View.cs";

            using (FileStream fs = new FileStream(viewpath, FileMode.Create))
            {
                using (StreamWriter sw = new StreamWriter(fs))
                {
                    sw.Write(sbr.ToString());
                }
            }

            sbr.Length = 0;
            sbr.Append("using UnityEngine;\r\n");
            sbr.Append("using UnityEngine.UI;\r\n");
            sbr.Append("using ZJY.Framework;\r\n");
            sbr.Append("\r\n");
            sbr.Append("namespace Hotfix\r\n");
            sbr.Append("{\r\n");
            sbr.AppendFormat("    public class {0}Ctrl\r\n", viewName);
            sbr.Append("    {\r\n");

            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 控制的窗口\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.AppendFormat("        private {0}View m_{0}View;\r\n", viewName);

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面初始化\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"view\">控制的窗口</param>\r\n");
            sbr.Append("        /// <param name=\"userData\">用户数据</param>\r\n");
            sbr.AppendFormat("        public void OnInit({0}View view, object userData)\r\n", viewName);
            sbr.Append("        {\r\n");
            sbr.AppendFormat("            m_{0}View = view;\r\n", viewName);
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面打开\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"userData\">用户数据</param>\r\n");
            sbr.Append("        public void OnOpen(object userData)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面关闭\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"userData\">用户数据</param>\r\n");
            sbr.Append("        public void OnClose(object userData)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面暂停\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        public void OnPause()\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面暂停恢复\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"userData\">用户数据</param>\r\n");
            sbr.Append("        public void OnResume(object userData)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面遮挡\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"userData\">用户数据</param>\r\n");
            sbr.Append("        public void OnCover(object userData)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面遮挡恢复\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        public void OnReveal()\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面激活\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"userData\">用户数据</param>\r\n");
            sbr.Append("        public void OnRefocus(object userData)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面轮询\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"deltaTime\">逻辑流逝时间,以秒为单位</param>\r\n");
            sbr.Append("        /// <param name=\"unscaledDeltaTime\">真实流逝时间,以秒为单位</param>\r\n");
            sbr.Append("        public void OnUpdate(float deltaTime, float unscaledDeltaTime)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("        }\r\n");

            sbr.Append("\r\n");
            sbr.Append("        /// <summary>\r\n");
            sbr.Append("        /// 界面深度改变\r\n");
            sbr.Append("        /// </summary>\r\n");
            sbr.Append("        /// <param name=\"uiGroupDepth\">界面组深度</param>\r\n");
            sbr.Append("        /// <param name=\"depthInUIGroup\">界面在界面组中的深度</param>\r\n");
            sbr.Append("        public void OnDepthChanged(int uiGroupDepth, int depthInUIGroup)\r\n");
            sbr.Append("        {\r\n");
            sbr.Append("        }\r\n");
            sbr.Append("    }\r\n");
            sbr.Append("}\r\n");

            string ctrlpath = Application.dataPath + "/../Hotfix/Module/UI/Temp/" + viewName + "Ctrl.cs";

            using (FileStream fs = new FileStream(ctrlpath, FileMode.Create))
            {
                using (StreamWriter sw = new StreamWriter(fs))
                {
                    sw.Write(sbr.ToString());
                }
            }

            UnityEditor.EditorUtility.DisplayDialog("Create view & ctrl", "Create Temp View And Ctrl OK!", "OK");
        }