Maze / Library /PackageCache /com.unity.ugui@1.0.0 /Tests /Runtime /Canvas /SiblingOrderChangesLayout.cs
| using UnityEngine; | |
| using UnityEngine.TestTools; | |
| using NUnit.Framework; | |
| using System.Collections; | |
| using UnityEngine.UI; | |
| [] | |
| [] | |
| [] | |
| public class SiblingOrderChangesLayout | |
| { | |
| GameObject m_CanvasGO; | |
| GameObject m_ParentGO; | |
| GameObject m_Child1GO; | |
| GameObject m_Child2GO; | |
| [] | |
| public void TestSetup() | |
| { | |
| m_CanvasGO = new GameObject("Canvas", typeof(Canvas)); | |
| m_ParentGO = new GameObject("ParentRenderer"); | |
| m_Child1GO = CreateTextObject("ChildRenderer1"); | |
| m_Child2GO = CreateTextObject("ChildRenderer2"); | |
| UnityEditor.EditorApplication.ExecuteMenuItem("Window/General/Game"); | |
| } | |
| [] | |
| public IEnumerator ReorderingSiblingChangesLayout() | |
| { | |
| m_ParentGO.transform.SetParent(m_CanvasGO.transform); | |
| m_Child1GO.transform.SetParent(m_ParentGO.transform); | |
| m_Child2GO.transform.SetParent(m_ParentGO.transform); | |
| m_ParentGO.AddComponent<CanvasRenderer>(); | |
| m_ParentGO.AddComponent<RectTransform>(); | |
| m_ParentGO.AddComponent<VerticalLayoutGroup>(); | |
| m_ParentGO.AddComponent<ContentSizeFitter>(); | |
| yield return new WaitForEndOfFrame(); | |
| Vector2 child1Pos = m_Child1GO.GetComponent<RectTransform>().anchoredPosition; | |
| Vector2 child2Pos = m_Child2GO.GetComponent<RectTransform>().anchoredPosition; | |
| Assert.That(child1Pos, Is.Not.EqualTo(child2Pos)); | |
| Assert.That(m_Child1GO.GetComponent<CanvasRenderer>().hasMoved, Is.False, "CanvasRenderer.hasMoved should be false"); | |
| m_Child2GO.transform.SetAsFirstSibling(); | |
| Canvas.ForceUpdateCanvases(); | |
| Assert.That(m_Child1GO.GetComponent<CanvasRenderer>().hasMoved, Is.True, "CanvasRenderer.hasMoved should be true"); | |
| Vector2 newChild1Pos = m_Child1GO.GetComponent<RectTransform>().anchoredPosition; | |
| Vector2 newChild2Pos = m_Child2GO.GetComponent<RectTransform>().anchoredPosition; | |
| Assert.That(newChild1Pos, Is.EqualTo(child2Pos), "Child1 should have moved to Child2's position"); | |
| Assert.That(newChild2Pos, Is.EqualTo(child1Pos), "Child2 should have moved to Child1's position"); | |
| } | |
| [] | |
| public void TearDown() | |
| { | |
| GameObject.DestroyImmediate(m_CanvasGO); | |
| } | |
| // Factory method for creating UI text objects taken from the original bug repro scene: | |
| private GameObject CreateTextObject(string name) | |
| { | |
| GameObject outputTextGameObject = new GameObject("OutputContent", typeof(CanvasRenderer)); | |
| RectTransform outputTextTransform = outputTextGameObject.AddComponent<RectTransform>(); | |
| outputTextTransform.pivot = new Vector2(0.5f, 0); | |
| outputTextTransform.anchorMin = Vector2.zero; | |
| outputTextTransform.anchorMax = new Vector2(1, 0); | |
| outputTextTransform.anchoredPosition = Vector2.zero; | |
| outputTextTransform.sizeDelta = Vector2.zero; | |
| Text outputText = outputTextGameObject.AddComponent<Text>(); | |
| outputText.text = "Hello World!"; | |
| outputTextGameObject.name = name; | |
| return outputTextGameObject; | |
| } | |
| } | |