//插入节点 public void InsertObj(Vector4 objrect, ushort objNum, TreeNode father) { int checkedId = QuadTree.Check(ref objrect, ref rect); //递归结束 if (checkedId == -1 || deep >= 5) { if (father.objects == null) { father.objects = new List <ushort>(); } if (!father.objects.Contains(objNum)) { father.objects.Add(objNum); } if (StepQTreeManager.TreeNodesByObjId.ContainsKey(objNum)) { StepQTreeManager.TreeNodesByObjId[objNum] = father; } else { StepQTreeManager.TreeNodesByObjId.Add(objNum, father); } return; } Vector4 newRect = Vector4.zero; if (checkedId == 1) { newRect = new Vector4(rect.x, rect.y, rect.z / 2, rect.w / 2); } if (checkedId == 2) { newRect = new Vector4(rect.z / 2, rect.y, rect.z / 2, rect.w / 2); } if (checkedId == 3) { newRect = new Vector4(rect.x, rect.w / 2, rect.z / 2, rect.w / 2); } if (checkedId == 4) { newRect = new Vector4(rect.z / 2, rect.w / 2, rect.z / 2, rect.w / 2); } //递归 childNodes[checkedId - 1].InsertObj(objrect, objNum, this); }