/// <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)); }
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); }
private bool LayerContains(ItemInfoBase.Layer layerEnum) { var layer = (int)layerEnum; return((parentLayerProp.intValue & layer) == layer); }