Example #1
0
        /// <summary>导出私有Item</summary>
        public static void ExportItemScript(UIOutlet ui)
        {
            string modName = SceneManager.GetActiveScene().name;
            string uiName  = ui.gameObject.name.Replace("prefab", "");;

            CreateItem(modName, uiName, ui);
            CreateItemView(modName, uiName, ui);
        }
Example #2
0
        /// <summary>导出公有Item</summary>
        public static void ExportPublicItemScript(UIOutlet ui)
        {
            string modName = "PublicItem";
            string uiName  = ui.gameObject.name.Replace("prefab", "");

            uiName = uiName.Substring(0, uiName.Length - 1);
            CreateItem(modName, uiName, ui);
            CreateItemView(modName, uiName, ui);
        }
Example #3
0
        private static void CreateUIView(string modName, string uiName, UIOutlet ui)
        {
            string saveFilePath = $"{ExportScriptDir}{modName}/UI/View/{uiName}View.cs";

            StringBuilder fieldStrs = new StringBuilder();
            StringBuilder getStrs   = new StringBuilder();

            UIOutlet.OutletInfo info;
            string objType;

            for (int i = ui.OutletInfos.Count; --i >= 0;)
            {
                info = ui.OutletInfos[i];
                if (info == null)
                {
                    continue;
                }
                objType = getTypeName(info.ComponentType);
                fieldStrs.AppendLine($"        private {objType} {info.Name};");
                if (objType == "GameObject")
                {
                    getStrs.AppendLine($@"            {info.Name} = Get(""{info.Name}"");");
                }
                else
                {
                    getStrs.AppendLine($@"            {info.Name} = Get<{objType}>(""{info.Name}"");");
                }
            }

            string fieldStr = $@"//工具生成不要修改

using System.Collections.Generic;
using UnityEngine.UI;
using UnityEngine;
using GameFramework;

namespace {AppSetting.MineGameName}.UI.{modName}
{{
    public partial class {uiName} : BaseUI
    {{
{fieldStrs} 
        /// <summary>初始化UI控件</summary>
        override protected void InitializeComponent()
        {{
{getStrs}
        }}
    }}
}}
";

            ToolsHelper.SaveFile(saveFilePath, fieldStr, true);
        }
        private static void HierarchyItemCB(int instanceid, Rect selectionrect)
        {
            var obj = EditorUtility.InstanceIDToObject(instanceid) as GameObject;

            if (obj != null)
            {
                UIOutlet uiLua = obj.GetComponent <UIOutlet>();
                if (uiLua != null)
                {
                    Rect r = new Rect(selectionrect);
                    r.x  = r.width - 50;
                    r.y += 2;
                    var style = new GUIStyle();
                    style.normal.textColor = Color.yellow;
                    string skinId = "";
                    GUI.Label(r, string.Format("Infos:{0}", uiLua.OutletInfos.Count + skinId), style);
                }
            }
        }
Example #5
0
        /// <summary>导出UI</summary>
        /// <param name="ui"></param>
        public static void ExportUIScript(UIOutlet ui)
        {
            string modName = SceneManager.GetActiveScene().name;
            string uiName  = ui.gameObject.name;

            CreateUI(modName, uiName, ui);
            CreateUIView(modName, uiName, ui);
            //如果UI中含有Item,导出Item
            foreach (UIOutlet.OutletInfo info in ui.OutletInfos)
            {
                if (info.Name.EndsWith("Item"))
                {
                    UIOutlet itemOut = (info.Object as GameObject).GetComponent <UIOutlet>();
                    if (itemOut != null)
                    {
                        ExportItemScript(itemOut);
                    }
                }
            }
        }
Example #6
0
        protected void initGameObject(GameObject obj)
        {
            gameObject = obj;
            transform  = obj.transform;
            Normalize();
            rectTransform = obj.GetComponent <RectTransform>();
            UIOutlet uiInfo = obj.GetComponent <UIOutlet>();

            foreach (UIOutlet.OutletInfo item in uiInfo.OutletInfos)
            {
                objectList.Add(item.Name, item.Object as GameObject);
            }
            gameObject.SetActive(m_isActive);
            gameObject.SetVisible(m_isVisible);
            isInstance = true;
            InitializeComponent();
            Initialize();
            InitializeSkin();
            //SetTextFont();
            Awake();
        }
Example #7
0
        static void CreateUIScript(MenuCommand menuCommadn)
        {
            GameObject target = menuCommadn.context as GameObject;

            if (target != null && target.transform.parent.name == "UICanvas" && target.name.EndsWith("UI"))
            {
                if (target.name.StartsWith("New UI"))
                {
                    ToolsHelper.Log("请修改UI名称!!!");
                    return;
                }

                UIOutlet uiObj = target.GetComponent <UIOutlet>();
                if (uiObj != null)
                {
                    UIScriptExport.ExportUIScript(uiObj);
                    ToolsHelper.Log("生成成功!!!");
                    AssetDatabase.Refresh();
                    return;
                }
            }

            ToolsHelper.Log("请选择有效果的UI对象!!!");
        }
Example #8
0
        static void CreateItemScript(MenuCommand menuCommadn)
        {
            GameObject target = menuCommadn.context as GameObject;

            if (target != null && (target.name.EndsWith("Item")))
            {
                UIOutlet uiObj = target.GetComponent <UIOutlet>();
                if (uiObj != null)
                {
                    UIScriptExport.ExportItemScript(uiObj);
                    ToolsHelper.Log("生成成功!!!");
                    AssetDatabase.Refresh();
                    return;
                }
            }

            if (target != null && (target.name.EndsWith("ItemP")))
            {
                ToolsHelper.Log("对于ItemP类型的Item,请在对应预设文件夹生成Item");
                return;
            }

            ToolsHelper.Log("请选择有效果的Item对象!!!,Item包含UIOutlet脚本,并且以Item命名结尾");
        }
Example #9
0
        private static void CreateUI(string modName, string uiName, UIOutlet ui)
        {
            string        saveFilePath = $"{ExportScriptDir}{modName}/UI/{uiName}.cs";
            StringBuilder eventAddStrs = new StringBuilder();
            StringBuilder eventStrs    = new StringBuilder();

            UIOutlet.OutletInfo info;
            string objType;

            for (int i = ui.OutletInfos.Count; --i >= 0;)
            {
                info = ui.OutletInfos[i];
                if (info == null)
                {
                    continue;
                }
                objType = getTypeName(info.ComponentType);
                if (info.Object.name.StartsWith("btn")) //自动生成按钮事件
                {
                    eventAddStrs.AppendLine($"            {info.Object.name}.AddClick({info.Object.name}_Click);   //");
                    eventStrs.AppendLine($@"        /// <summary></summary>
        void {info.Object.name}_Click()
        {{
        }}");
                }
            }

            string fieldStr = $@"using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using DG.Tweening;
using GameFramework;

namespace {AppSetting.MineGameName}.UI.{modName}
{{
    public partial class {uiName} : BaseUI
    {{
        /// <summary>XXXX界面</summary>
        public {uiName}()
        {{
            UINode = EUINode.UIWindow;     //UI节点
            OpenAnim = EUIAnim.None;      //UI打开效果
            CloseAnim = EUIAnim.None;   //UI关闭效果 
        }}
        
        /// <summary>添加事件监听</summary>
        override protected void Awake()
        {{ 
{eventAddStrs}
        }}
        
         /// <summary>刷新</summary>
        public override void Refresh()
        {{
        }}

{eventStrs}
        /// <summary>释放UI引用</summary>
        public override void Dispose()
        {{
        }}
    }}
}}
";

            ToolsHelper.SaveFile(saveFilePath, fieldStr, false);
        }
Example #10
0
        private static void CreateItem(string modName, string uiName, UIOutlet ui)
        {
            string        saveFilePath = $"{ExportScriptDir}{modName}/UI/Item/{uiName}.cs";
            StringBuilder eventAddStrs = new StringBuilder();
            StringBuilder eventStrs    = new StringBuilder();

            UIOutlet.OutletInfo info;
            string objType;

            for (int i = ui.OutletInfos.Count; --i >= 0;)
            {
                info = ui.OutletInfos[i];
                if (info == null)
                {
                    continue;
                }
                objType = getTypeName(info.ComponentType);
                if (info.Object.name.StartsWith("btn")) //自动生成按钮事件
                {
                    eventAddStrs.AppendLine($"            {info.Object.name}.AddClick({info.Object.name}_Click);   //");
                    eventStrs.AppendLine($@"        /// <summary></summary>
        void {info.Object.name}_Click()
        {{
        }}");
                }
            }

            string selClick = "             gameObject.AddClick(self_Click);     //当前对象点击事件";

            if (ui.GetComponent <Button>() != null)
            {
                selClick = "             gameObject.GetComponent<Button>().AddClick(self_Click);  //当前对象点击事件";
            }
            string fieldStr = $@"using System;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
using GameFramework;

namespace {AppSetting.MineGameName}.UI.{modName}
{{
    public partial class {uiName} : BaseItem
    {{
        public Action<{uiName}> onClick; //Item点击事件

        /// <summary>添加事件监听</summary>
        override protected void Awake()
        {{
{selClick}             {eventAddStrs}
        }}
        /// <summary>设置数据<param name=""data""></param>
        /*public void SetData({uiName}Data data)
        {{
            Data = data;
            txtServerName.text = data.ServerName;
        }}*/
        /// <summary>刷新Item</summary>
        public override void Refresh()
        {{
        }}

        /// <summary>当前对象点击事件</summary>
        void self_Click()
        {{
            onClick?.Invoke(this);
        }}
{ eventStrs}
        /// <summary>释放Item引用</summary>
        public override void Dispose()
        {{
            onClick = null;
        }}
    }}
}}
";

            ToolsHelper.SaveFile(saveFilePath, fieldStr, false);
        }
Example #11
0
 /// <summary>
 /// 实例化Item
 /// </summary>
 /// <param name="prefab">预制体,会重新实例一个</param>
 /// <param name="parent">父对象</param>
 public void Instantiate(UIOutlet uiOut, Transform parent)
 {
     Instantiate(uiOut.gameObject, parent);
 }