Ejemplo n.º 1
0
    public override void OnInspectorGUI()
    {
        if (target == null || EditorApplication.isPlaying)
        {
            return;
        }

        base.OnInspectorGUI();

        if (string.IsNullOrEmpty(group.Name))
        {
            group.Name = group.gameObject.name;
        }
        if (string.IsNullOrEmpty(group.ClassName))
        {
            group.ClassName = group.gameObject.name;
        }

        MLuaUIPanel panel       = MFindHelper.GetParentComponent <MLuaUIPanel>(group.transform);
        MLuaUIGroup parentGroup = MFindHelper.GetParentComponent <MLuaUIGroup>(group.transform);

        if (GUILayout.Button("标准化", GUILayout.Height(20)))
        {
            MLuaUIGroup[] cacheGroups     = null;
            MLuaUICom[]   cacheComponents = null;
            FillComponents(group.gameObject, ref cacheGroups, ref cacheComponents);
        }

        if (GUILayout.Button("生成Lua模版代码", GUILayout.Height(20)))
        {
            CreateScript();
        }
    }
Ejemplo n.º 2
0
    //得到此物体可包含的MLuaUIGroup和MLuaUICom
    public static KeyValuePair <MLuaUIGroup[], MLuaUICom[]> GetGroupsAndComs(GameObject go)
    {
        MLuaUIGroup[]      h      = go.GetComponentsInChildren <MLuaUIGroup>(true);
        List <MLuaUIGroup> groups = new List <MLuaUIGroup>(h);

        Dictionary <MLuaUIGroup, List <MLuaUICom> >   comInGroup   = new Dictionary <MLuaUIGroup, List <MLuaUICom> >();
        Dictionary <MLuaUIGroup, List <MLuaUIGroup> > groupInGroup = new Dictionary <MLuaUIGroup, List <MLuaUIGroup> >();
        List <MLuaUIGroup> panelGroup = new List <MLuaUIGroup>();

        for (int i = 0; i < groups.Count; i++)
        {
            comInGroup[groups[i]]   = new List <MLuaUICom>();
            groupInGroup[groups[i]] = new List <MLuaUIGroup>();
        }
        for (int i = 0; i < groups.Count; i++)
        {
            MLuaUIGroup parentGroup = MFindHelper.GetParentComponent <MLuaUIGroup>(groups[i].transform, go.transform);
            //如果Group父物体有Group则放入父物体Group中
            if (parentGroup != null && groupInGroup.ContainsKey(parentGroup))
            {
                groupInGroup[parentGroup].Add(groups[i]);
            }
            else
            {
                //没有则放入Panel的Group中
                panelGroup.Add(groups[i]);
            }
        }

        foreach (var item in groupInGroup)
        {
            item.Key.Groups = item.Value.ToArray();
        }

        MLuaUICom[]      components = go.GetComponentsInChildren <MLuaUICom>(true);
        List <MLuaUICom> comList    = new List <MLuaUICom>();

        for (int i = 0; i < components.Length; i++)
        {
            components[i].UIPanel = go.GetComponent <MLuaUIPanel>();
            MLuaUIGroup parentGroup = components[i].GetComponent <MLuaUIGroup>();
            if (parentGroup == null)
            {
                parentGroup = MFindHelper.GetParentComponent <MLuaUIGroup>(components[i].transform, go.transform);
            }
            //如果Component父物体有Group则放入父物体Group中
            if (parentGroup != null && comInGroup.ContainsKey(parentGroup))
            {
                comInGroup[parentGroup].Add(components[i]);
            }
            else
            {
                //没有则放入Panel的ComRefs中
                comList.Add(components[i]);
            }
        }
        foreach (var item in comInGroup)
        {
            item.Key.ComRefs = item.Value.ToArray();
        }

        MLuaUICom[] coms = comList.ToArray();
        //如果自己身上有MLuaUIGroup,做下处理
        //MLuaUIGroup selfGroup = go.GetComponent<MLuaUIGroup>();
        //if (selfGroup != null)
        //{
        //    panelGroup.Remove(selfGroup);
        //    coms = selfGroup.ComRefs;
        //}

        KeyValuePair <MLuaUIGroup[], MLuaUICom[]> data = new KeyValuePair <MLuaUIGroup[], MLuaUICom[]>(panelGroup.ToArray(), coms);

        return(data);
    }