// Copyright (c) 2025 EFramework Innovation. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. using NUnit.Framework; using EFramework.Unity.UIPlugin; using UnityEngine; using UnityEngine.UI; using UnityEngine.TestTools; using System.Collections; /// /// TestUICameraMask 是 UICameraMask 的单元测试。 /// public class TestUICameraMask { [UnityTest] public IEnumerator SetTarget() { // 创建测试对象 var root = new GameObject("TestMask"); root.AddComponent(); var imageObj = new GameObject("Image"); imageObj.SetActive(false); var canvasGroup = imageObj.AddComponent(); var image = imageObj.AddComponent(); var mask = imageObj.AddComponent(); mask.ScreenMask = canvasGroup; imageObj.SetActive(true); var testColor = Color.red; var duration = 2f; var maxAlpha = 0.5f; mask.SetTarget(testColor, duration, maxAlpha); Assert.That(image.color, Is.EqualTo(testColor), "Image颜色应设置为红色"); // 等待开始的一帧,确保Process被调用 yield return null; // 验证开始变化 - 透明度应开始增加 Assert.That(canvasGroup.alpha, Is.GreaterThan(0f), "透明度应开始增加"); Assert.That(canvasGroup.alpha, Is.LessThan(maxAlpha), "透明度应小于最大值"); yield return new WaitForSeconds(duration); Assert.That(canvasGroup.alpha, Is.EqualTo(0), "透明度应该降为0"); // 清理 Object.DestroyImmediate(root); } }