From e50f5959fd2c8691c18a679ce1c19388fe5d0f51 Mon Sep 17 00:00:00 2001 From: YuShunyao Date: Mon, 30 Mar 2026 18:02:28 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=BD=E5=85=B7=E5=85=BB=E6=88=90-=E7=A7=91?= =?UTF-8?q?=E6=8A=80=E6=A0=91=E7=94=9F=E6=88=90=E8=A7=84=E5=88=99=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20=E4=BF=AE=E5=A4=8D=E7=A7=91=E6=8A=80=E6=A0=91?= =?UTF-8?q?=E7=94=9F=E6=88=90=E9=94=99=E4=BD=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../TreeEditor/VehicleTreeManager.cs | 77 +++++++++++++++++-- 1 file changed, 70 insertions(+), 7 deletions(-) diff --git a/ProjectNLD/Assets/EditorHelper/AreaEditor/TreeEditor/VehicleTreeManager.cs b/ProjectNLD/Assets/EditorHelper/AreaEditor/TreeEditor/VehicleTreeManager.cs index 52e6a2a7e54..1b10f2d3077 100644 --- a/ProjectNLD/Assets/EditorHelper/AreaEditor/TreeEditor/VehicleTreeManager.cs +++ b/ProjectNLD/Assets/EditorHelper/AreaEditor/TreeEditor/VehicleTreeManager.cs @@ -187,6 +187,11 @@ public class VehicleTreeManager : TreeEditorManager var _tree = GetSampleTree(list); TreeHelpers.CalculateNodePositions(_tree); PrintPos(_tree); + + if (treeContent == TreeContent.Vehicle) + { + AdjustVehicleTreePosition(treeGameObject); + } } else { @@ -205,6 +210,33 @@ public class VehicleTreeManager : TreeEditorManager root.tile.SetActive(false); DrawLine(m_shownTree); } + + private void AdjustVehicleTreePosition(GameObject treeGameObject) + { + var maxY = nodes.Values. + Where(p => p.tile != null && !ReferenceEquals(p, root)). + Max(p => p.tile.GetComponent().anchoredPosition.y); + var minY = nodes.Values. + Where(p => p.tile != null && !ReferenceEquals(p, root)). + Min(p => p.tile.GetComponent().anchoredPosition.y); + var minX = nodes.Values. + Where(p => p.tile != null && !ReferenceEquals(p, root)). + Min(p => p.tile.GetComponent().anchoredPosition.x); + + // 计算偏移量 + Vector2 offset = new Vector2(273f - minX, -462 - 0.5f * (minY + maxY)); + + // 移动所有节点 + foreach (var node in nodes.Values) + { + if (node.tile != null) + { + RectTransform rectTransform = node.tile.GetComponent(); + rectTransform.anchoredPosition += offset; + } + } + } + /// /// 调整组件树位置,使根节点位于指定位置 /// @@ -873,13 +905,44 @@ public class VehicleTreeManager : TreeEditorManager lineRenderer.SetPoints(points); DebugUtil.Log("Drawing lines. Points count: " + points.Count); - // 计算树的总尺寸以适配视图 - var maxY = nodes.Values.Where(p => p.tile != null).Max(p => p.tile.GetComponent().anchoredPosition.y + p.tile.GetComponent().sizeDelta.y); - var minY = nodes.Values.Where(p => p.tile != null).Min(p => p.tile.GetComponent().anchoredPosition.y - p.tile.GetComponent().sizeDelta.y); - height = maxY - minY; - var maxX = nodes.Values.Where(p => p.tile != null).Max(p => p.tile.GetComponent().anchoredPosition.x + p.tile.GetComponent().sizeDelta.x); - var minX = nodes.Values.Where(p => p.tile != null).Min(p => p.tile.GetComponent().anchoredPosition.x - p.tile.GetComponent().sizeDelta.x); - width = maxX - minX; + if (treeContent == TreeContent.Component) + { + // 计算树的总尺寸以适配视图 + var maxY = nodes.Values. + Where(p => p.tile != null). + Max(p => p.tile.GetComponent().anchoredPosition.y + p.tile.GetComponent().sizeDelta.y); + var minY = nodes.Values. + Where(p => p.tile != null). + Min(p => p.tile.GetComponent().anchoredPosition.y - p.tile.GetComponent().sizeDelta.y); + var maxX = nodes.Values. + Where(p => p.tile != null). + Max(p => p.tile.GetComponent().anchoredPosition.x + p.tile.GetComponent().sizeDelta.x); + var minX = nodes.Values. + Where(p => p.tile != null). + Min(p => p.tile.GetComponent().anchoredPosition.x - p.tile.GetComponent().sizeDelta.x); + + height = maxY - minY; + width = maxX - minX; + } + else + { + // 计算树的总尺寸以适配视图 + var maxY = nodes.Values. + Where(p => p.tile != null && !ReferenceEquals(p, root)). + Max(p => p.tile.GetComponent().anchoredPosition.y + 0.5f * p.tile.GetComponent().sizeDelta.y); + var minY = nodes.Values. + Where(p => p.tile != null &&!ReferenceEquals(p, root)). + Min(p => p.tile.GetComponent().anchoredPosition.y - 0.5f * p.tile.GetComponent().sizeDelta.y); + var maxX = nodes.Values. + Where(p => p.tile != null && !ReferenceEquals(p, root)). + Max(p => p.tile.GetComponent().anchoredPosition.x + 0.5f * p.tile.GetComponent().sizeDelta.x); + var minX = nodes.Values. + Where(p => p.tile != null && !ReferenceEquals(p, root)). + Min(p => p.tile.GetComponent().anchoredPosition.x - 0.5f * p.tile.GetComponent().sizeDelta.x); + + height = maxY - minY; + width = maxX - minX + 30f; + } m_shownTree.GetComponent().sizeDelta = new Vector2(width + 100, height + 100); }