Keine Beschreibung
Du kannst nicht mehr als 25 Themen auswählen Themen müssen mit entweder einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

CanvasGroupInheritedAlpha.cs 8.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. using UnityEngine;
  2. using UnityEngine.TestTools;
  3. using NUnit.Framework;
  4. using System.Collections;
  5. using UnityEngine.UI;
  6. [TestFixture]
  7. public class CanvasGroupTests
  8. {
  9. GameObject m_CanvasObject;
  10. CanvasGroup m_CanvasGroup;
  11. CanvasRenderer m_ChildCanvasRenderer;
  12. CanvasGroup m_ChildCanvasGroup;
  13. CanvasRenderer m_GrandChildCanvasRenderer;
  14. CanvasGroup m_GrandChildCanvasGroup;
  15. GameObject m_CanvasTwoObject;
  16. CanvasGroup m_CanvasTwoGroup;
  17. CanvasRenderer m_ChildCanvasTwoRenderer;
  18. const float m_CanvasAlpha = 0.25f;
  19. const float m_ChildAlpha = 0.5f;
  20. const float m_GrandChildAlpha = 0.8f;
  21. [SetUp]
  22. public void TestSetup()
  23. {
  24. m_CanvasObject = new GameObject("Canvas", typeof(Canvas));
  25. m_CanvasGroup = m_CanvasObject.AddComponent<CanvasGroup>();
  26. m_CanvasGroup.alpha = m_CanvasAlpha;
  27. var childObject = new GameObject("Child Object", typeof(Image));
  28. childObject.transform.SetParent(m_CanvasObject.transform);
  29. m_ChildCanvasGroup = childObject.AddComponent<CanvasGroup>();
  30. m_ChildCanvasGroup.alpha = m_ChildAlpha;
  31. m_ChildCanvasRenderer = childObject.GetComponent<CanvasRenderer>();
  32. var grandChildObject = new GameObject("Grand Child Object", typeof(Image));
  33. grandChildObject.transform.SetParent(childObject.transform);
  34. m_GrandChildCanvasGroup = grandChildObject.AddComponent<CanvasGroup>();
  35. m_GrandChildCanvasGroup.alpha = m_GrandChildAlpha;
  36. m_GrandChildCanvasRenderer = grandChildObject.GetComponent<CanvasRenderer>();
  37. m_CanvasTwoObject = new GameObject("CanvasTwo", typeof(Canvas));
  38. m_CanvasTwoObject.transform.SetParent(m_CanvasObject.transform);
  39. m_CanvasTwoGroup = m_CanvasTwoObject.AddComponent<CanvasGroup>();
  40. m_CanvasTwoGroup.alpha = m_CanvasAlpha;
  41. var childTwoObject = new GameObject("Child Two Object", typeof(Image));
  42. childTwoObject.transform.SetParent(m_CanvasTwoObject.transform);
  43. m_ChildCanvasTwoRenderer = childTwoObject.GetComponent<CanvasRenderer>();
  44. }
  45. [TearDown]
  46. public void TearDown()
  47. {
  48. GameObject.DestroyImmediate(m_CanvasObject);
  49. }
  50. private void SetUpCanvasGroupState()
  51. {
  52. m_CanvasGroup.enabled = false;
  53. m_CanvasGroup.ignoreParentGroups = false;
  54. m_ChildCanvasGroup.enabled = false;
  55. m_ChildCanvasGroup.ignoreParentGroups = false;
  56. m_GrandChildCanvasGroup.enabled = false;
  57. m_GrandChildCanvasGroup.ignoreParentGroups = false;
  58. m_CanvasTwoGroup.enabled = false;
  59. m_CanvasTwoGroup.ignoreParentGroups = false;
  60. }
  61. [Test]
  62. public void EnabledCanvasGroupEffectSelfAndChildrenAlpha()
  63. {
  64. // Set up the states of the canvas groups for the tests.
  65. SetUpCanvasGroupState();
  66. // With no enabled CanvasGroup the Alphas should be 1
  67. Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
  68. Assert.AreEqual(1.0f, m_GrandChildCanvasRenderer.GetInheritedAlpha());
  69. // Enable the child CanvasGroup. It and its children should now have the same alpha value.
  70. m_ChildCanvasGroup.enabled = true;
  71. Assert.AreEqual(m_ChildAlpha, m_ChildCanvasRenderer.GetInheritedAlpha());
  72. Assert.AreEqual(m_ChildAlpha, m_GrandChildCanvasRenderer.GetInheritedAlpha());
  73. }
  74. [Test]
  75. public void EnabledCanvasGroupOnACanvasEffectAllChildrenAlpha()
  76. {
  77. // Set up the states of the canvas groups for the tests.
  78. SetUpCanvasGroupState();
  79. // With no enabled CanvasGroup the Alphas should be 1
  80. Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
  81. Assert.AreEqual(1.0f, m_GrandChildCanvasRenderer.GetInheritedAlpha());
  82. // Children under a different nest canvas should also obey the alpha
  83. Assert.AreEqual(1.0f, m_ChildCanvasTwoRenderer.GetInheritedAlpha());
  84. // Enable the Canvas CanvasGroup. All of the Canvas children should now have the same alpha value.
  85. m_CanvasGroup.enabled = true;
  86. Assert.AreEqual(m_CanvasAlpha, m_ChildCanvasRenderer.GetInheritedAlpha());
  87. Assert.AreEqual(m_CanvasAlpha, m_GrandChildCanvasRenderer.GetInheritedAlpha());
  88. // Children under a different nest canvas should also obey the alpha
  89. Assert.AreEqual(m_CanvasAlpha, m_ChildCanvasTwoRenderer.GetInheritedAlpha());
  90. }
  91. [Test]
  92. public void EnabledCanvasGroupOnLeafChildEffectOnlyThatChild()
  93. {
  94. // Set up the states of the canvas groups for the tests.
  95. SetUpCanvasGroupState();
  96. // With no enabled CanvasGroup the Alphas should be 1
  97. Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
  98. Assert.AreEqual(1.0f, m_GrandChildCanvasRenderer.GetInheritedAlpha());
  99. // Enable the Leaf child CanvasGroup. Only it should have a modified alpha
  100. m_GrandChildCanvasGroup.enabled = true;
  101. Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
  102. Assert.AreEqual(m_GrandChildAlpha, m_GrandChildCanvasRenderer.GetInheritedAlpha());
  103. }
  104. [Test]
  105. public void EnabledCanvasGroupOnCanvasAndChildMultipleAlphaValuesCorrectly()
  106. {
  107. // Set up the states of the canvas groups for the tests.
  108. SetUpCanvasGroupState();
  109. // With no enabled CanvasGroup the Alphas should be 1
  110. Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
  111. Assert.AreEqual(1.0f, m_GrandChildCanvasRenderer.GetInheritedAlpha());
  112. // Enable the Canvas CanvasGroup. All of the Canvas children should now have the same alpha value.
  113. m_CanvasGroup.enabled = true;
  114. m_ChildCanvasGroup.enabled = true;
  115. Assert.AreEqual(m_CanvasAlpha * m_ChildAlpha, m_ChildCanvasRenderer.GetInheritedAlpha());
  116. Assert.AreEqual(m_CanvasAlpha * m_ChildAlpha, m_GrandChildCanvasRenderer.GetInheritedAlpha());
  117. }
  118. [Test]
  119. public void EnabledCanvasGroupOnCanvasAndChildWithChildIgnoringParentGroupMultipleAlphaValuesCorrectly()
  120. {
  121. // Set up the states of the canvas groups for the tests.
  122. SetUpCanvasGroupState();
  123. // With no enabled CanvasGroup the Alphas should be 1
  124. Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
  125. Assert.AreEqual(1.0f, m_GrandChildCanvasRenderer.GetInheritedAlpha());
  126. // Enable the Canvas CanvasGroup. All of the Canvas children should now have the same alpha value.
  127. m_CanvasGroup.enabled = true;
  128. m_ChildCanvasGroup.enabled = true;
  129. m_ChildCanvasGroup.ignoreParentGroups = true;
  130. Assert.AreEqual(m_ChildAlpha, m_ChildCanvasRenderer.GetInheritedAlpha());
  131. Assert.AreEqual(m_ChildAlpha, m_GrandChildCanvasRenderer.GetInheritedAlpha());
  132. }
  133. [Test]
  134. public void EnabledCanvasGroupOnCanvasAndChildrenWithAllChildrenIgnoringParentGroupMultipleAlphaValuesCorrectly()
  135. {
  136. // Set up the states of the canvas groups for the tests.
  137. SetUpCanvasGroupState();
  138. // With no enabled CanvasGroup the Alphas should be 1
  139. Assert.AreEqual(1.0f, m_ChildCanvasRenderer.GetInheritedAlpha());
  140. Assert.AreEqual(1.0f, m_GrandChildCanvasRenderer.GetInheritedAlpha());
  141. // Enable the Canvas CanvasGroup. All of the Canvas children should now have the same alpha value.
  142. m_CanvasGroup.enabled = true;
  143. m_ChildCanvasGroup.enabled = true;
  144. m_GrandChildCanvasGroup.enabled = true;
  145. m_ChildCanvasGroup.ignoreParentGroups = true;
  146. m_GrandChildCanvasGroup.ignoreParentGroups = true;
  147. Assert.AreEqual(m_ChildAlpha, m_ChildCanvasRenderer.GetInheritedAlpha());
  148. Assert.AreEqual(m_GrandChildAlpha, m_GrandChildCanvasRenderer.GetInheritedAlpha());
  149. }
  150. [Test]
  151. public void EnabledCanvasGroupOnNestedCanvasIgnoringParentGroupMultipleAlphaValuesCorrectly()
  152. {
  153. // Set up the states of the canvas groups for the tests.
  154. SetUpCanvasGroupState();
  155. // With no enabled CanvasGroup the Alphas should be 1
  156. Assert.AreEqual(1.0f, m_ChildCanvasTwoRenderer.GetInheritedAlpha());
  157. // Enable the Canvas CanvasGroup. All of the Canvas children should now have the same alpha value.
  158. m_CanvasGroup.enabled = true;
  159. m_CanvasTwoGroup.enabled = true;
  160. m_CanvasTwoGroup.ignoreParentGroups = true;
  161. Assert.AreEqual(m_CanvasAlpha, m_ChildCanvasTwoRenderer.GetInheritedAlpha());
  162. }
  163. }