Нема описа
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

RectTransformValidAfterEnable.cs 2.4KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using System;
  2. using System.Collections;
  3. using UnityEngine;
  4. using UnityEngine.TestTools;
  5. using NUnit.Framework;
  6. using UnityEngine.SceneManagement;
  7. using UnityEngine.UI;
  8. using UnityEditor;
  9. [TestFixture]
  10. public class RectTransformValidAfterEnable : IPrebuildSetup
  11. {
  12. const string kSceneName = "DisabledCanvasScene";
  13. const string kGameObjectName = "DisabledCanvas";
  14. public void Setup()
  15. {
  16. #if UNITY_EDITOR
  17. Action codeToExecute = delegate()
  18. {
  19. var canvasGameObject = new GameObject(kGameObjectName, typeof(Canvas));
  20. canvasGameObject.SetActive(false);
  21. canvasGameObject.GetComponent<Canvas>().renderMode = RenderMode.ScreenSpaceOverlay;
  22. canvasGameObject.GetComponent<RectTransform>().sizeDelta = new Vector2(0, 0);
  23. canvasGameObject.GetComponent<RectTransform>().anchoredPosition = new Vector2(0, 0);
  24. CanvasScaler canvasScaler = canvasGameObject.AddComponent<CanvasScaler>();
  25. canvasScaler.uiScaleMode = CanvasScaler.ScaleMode.ScaleWithScreenSize;
  26. canvasScaler.referenceResolution = new Vector2(1024, 768);
  27. };
  28. CreateSceneUtility.CreateScene(kSceneName, codeToExecute);
  29. #endif
  30. }
  31. [UnityTest]
  32. public IEnumerator CheckRectTransformValidAfterEnable()
  33. {
  34. AsyncOperation operation = SceneManager.LoadSceneAsync(kSceneName, LoadSceneMode.Additive);
  35. yield return operation;
  36. Scene scene = SceneManager.GetSceneByName(kSceneName);
  37. GameObject[] gameObjects = scene.GetRootGameObjects();
  38. GameObject canvasGameObject = null;
  39. foreach (GameObject gameObject in gameObjects)
  40. {
  41. if (gameObject.name == kGameObjectName)
  42. {
  43. canvasGameObject = gameObject;
  44. break;
  45. }
  46. }
  47. Assert.IsNotNull(canvasGameObject);
  48. RectTransform rectTransform = canvasGameObject.GetComponent<RectTransform>();
  49. canvasGameObject.SetActive(true);
  50. yield return new WaitForEndOfFrame();
  51. Rect rect = rectTransform.rect;
  52. Assert.Greater(rect.width, 0);
  53. Assert.Greater(rect.height, 0);
  54. operation = SceneManager.UnloadSceneAsync(kSceneName);
  55. yield return operation;
  56. }
  57. [TearDown]
  58. public void TearDown()
  59. {
  60. //Manually add Assets/ and .unity as CreateSceneUtility does that for you.
  61. #if UNITY_EDITOR
  62. AssetDatabase.DeleteAsset("Assets/" + kSceneName + ".unity");
  63. #endif
  64. }
  65. }