Пример #1
0
        /// <summary>
        /// 设置实例对象父级
        /// </summary>
        /// <param name="layer"></param>
        /// <param name="child"></param>
        /// <param name="reset"></param>
        //private void SetParent(ItemInfoBase.Layer layer, Transform child/*, bool reset*/)
        //{
        //    Transform parent = null;
        //    var _parents = _parentsDic[_root];
        //    if (!_parents.TryGetValue((int)layer, out parent))
        //    {
        //        parent = new GameObject(LayerToString(layer)).transform;
        //        if (_root is RectTransform)
        //        {
        //            var rectParent = parent.gameObject.AddComponent<RectTransform>();
        //            rectParent.anchorMin = Vector2.zero;
        //            rectParent.anchorMax = Vector2.one;
        //            rectParent.offsetMin = Vector3.zero;
        //            rectParent.offsetMax = Vector3.zero;
        //            parent = rectParent;
        //            parent.SetParent(_root, false);
        //        }
        //        else
        //        {
        //            parent.SetParent(_root, true);
        //        }
        //        _parents.Add((int)layer, parent);

        //        ResortParents(_parents);
        //    }

        //    child.SetParent(parent, !(_root is RectTransform));
        //}
        public static void SetTranform(GameObject item, ItemInfoBase.Layer layer, Transform parent)
        {
            string rootName = UIBundleLoadCtrl.LayerToString(layer);// LayerToString();
            var    root     = parent.transform.Find(rootName);

            if (root == null)
            {
                root = new GameObject(rootName).transform;
                if (parent is RectTransform)
                {
                    var rectParent = root.gameObject.AddComponent <RectTransform>();
                    rectParent.anchorMin = Vector2.zero;
                    rectParent.anchorMax = Vector2.one;
                    rectParent.offsetMin = Vector3.zero;
                    rectParent.offsetMax = Vector3.zero;
                    root = rectParent;
                    root.SetParent(parent, false);
                }
                else
                {
                    root.SetParent(parent, true);
                }

                if (rootName.StartsWith("-1"))
                {
                    root.SetAsLastSibling();
                }
                else
                {
                    int i = 0;
                    for (; i < parent.childCount; i++)
                    {
                        var ritem = parent.GetChild(i);
                        if (ritem.name.StartsWith("-1"))
                        {
                            break;
                        }
                        if (string.Compare(rootName, ritem.name) < 0)
                        {
                            break;
                        }
                    }
                    root.SetSiblingIndex(i);
                }
            }
            item.transform.SetParent(root, !(item.GetComponent <Transform>() is RectTransform));
        }
Пример #2
0
        public static string LayerToString(ItemInfoBase.Layer layer, bool showint = true)
        {
            string str = "";

            if (showint)
            {
                str += (int)layer + "|";
            }

            if ((int)layer == -1)
            {
                str += "[Top]";
            }
            else if ((int)layer == 0)
            {
                str += "[Bottom]";
            }
            else
            {
                if ((layer & ItemInfoBase.Layer.Heap) == ItemInfoBase.Layer.Heap)
                {
                    str += "[H]";
                }
                if ((layer & ItemInfoBase.Layer.Mask) == ItemInfoBase.Layer.Mask)
                {
                    str += "[M]";
                }
                if ((layer & ItemInfoBase.Layer.Pop) == ItemInfoBase.Layer.Pop)
                {
                    str += "[P]";
                }
                if ((layer & ItemInfoBase.Layer.Tip) == ItemInfoBase.Layer.Tip)
                {
                    str += "[T]";
                }
            }
            return(str);
        }
Пример #3
0
    private bool LayerContains(ItemInfoBase.Layer layerEnum)
    {
        var layer = (int)layerEnum;

        return((parentLayerProp.intValue & layer) == layer);
    }