奇怪的调
This commit is contained in:
@@ -36,35 +36,52 @@ namespace Ichni.Editor
|
||||
public Vector2 vector2;
|
||||
public void FindTab(GameElement targetElement, bool findparent = false)
|
||||
{
|
||||
if (findparent && targetElement.connectedTab != null)
|
||||
{
|
||||
targetElement.connectedTab.expandButton.onClick.Invoke();
|
||||
return;
|
||||
}
|
||||
else if (targetElement.connectedTab != null)
|
||||
{
|
||||
targetElement.connectedTab.tabButton.onClick.Invoke();
|
||||
}
|
||||
else
|
||||
{
|
||||
FindTab(targetElement.parentElement, true);
|
||||
if (!findparent)
|
||||
{
|
||||
targetElement.connectedTab.tabButton.onClick.Invoke();
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
targetElement.connectedTab.expandButton.onClick.Invoke();
|
||||
return;
|
||||
}
|
||||
//targetElement.SetUpInspector();
|
||||
StartCoroutine(TryGetTab(targetElement));
|
||||
}
|
||||
public IEnumerator TryGetTab(GameElement targetElement)
|
||||
{
|
||||
|
||||
StandardInspectionElement.GenerateForLoading();
|
||||
// 1. 向上找到最近的有Tab的祖先
|
||||
Stack<GameElement> stack = new Stack<GameElement>();
|
||||
GameElement current = targetElement;
|
||||
while (current != null && current.connectedTab == null)
|
||||
{
|
||||
stack.Push(current);
|
||||
current = current.parentElement;
|
||||
}
|
||||
HierarchyTab tab = targetElement.connectedTab;
|
||||
float Tablocalpos = (-tab.transform.localPosition.y) - (tabContainer.sizeDelta.y / 4f);
|
||||
|
||||
// 2. 如果有Tab的祖先存在,依次展开回目标
|
||||
HierarchyTab parentTab = current != null ? current.connectedTab : null;
|
||||
while (stack.Count > 0)
|
||||
{
|
||||
var elem = stack.Pop();
|
||||
// 只展开父Tab,不直接生成Tab
|
||||
if (elem.parentElement != null && elem.parentElement.connectedTab != null && !elem.parentElement.connectedTab.isExpanded)
|
||||
{
|
||||
elem.parentElement.connectedTab.ExpandOrFold();
|
||||
yield return null;
|
||||
}
|
||||
// 等待当前elem的Tab生成
|
||||
while (elem.connectedTab == null)
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
parentTab = elem.connectedTab;
|
||||
}
|
||||
|
||||
// 3. 等待目标Tab实例化
|
||||
while (targetElement.connectedTab == null)
|
||||
{
|
||||
yield return null;
|
||||
}
|
||||
|
||||
HierarchyTab finalTab = targetElement.connectedTab;
|
||||
float Tablocalpos = (-finalTab.transform.localPosition.y) - (tabContainer.sizeDelta.y / 4f);
|
||||
float pct = Tablocalpos / tabContainer.sizeDelta.y;
|
||||
scrollRect.verticalNormalizedPosition = 1f - pct;
|
||||
finalTab.SelectGameElement();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user