Unity弹窗动画效果实现-AnimationCurve

发布时间:2026/7/27 5:32:37
Unity弹窗动画效果实现-AnimationCurve 引言Unity里有个动画控制API给UI加点儿平滑动画能让体验提升不少。今天就来分享一个基于AnimationCurve的动画控制器用协程控制UI缩放实现自定义缓动效果的显示和隐藏特别适合做弹窗、菜单的入场退场动画。实现代码以下是完整的C#脚本实现using System; using System.Collections; using System.Collections.Generic; using UnityEngine; /// summary /// 使用AnimationCurve控制UI对象的平滑显示与隐藏动画 /// /summary public class AnimationController : MonoBehaviour { [Tooltip(显示动画缓动曲线)] public AnimationCurve showCurve; [Tooltip(隐藏动画缓动曲线)] public AnimationCurve hideCurve; [Tooltip(动画播放速度)] public float animationSpeed 1.0f; [Tooltip(控制动画的UI)] public GameObject targetObject; /// summary /// 播放UI显示动画 /// /summary public IEnumerator ShowUI(GameObject uiObject) { float timer 0f; while (timer 1f) { float scaleValue showCurve.Evaluate(timer); uiObject.transform.localScale Vector3.one * scaleValue; timer Time.deltaTime * animationSpeed; yield return null; } } /// summary /// 播放UI隐藏动画 /// /summary public IEnumerator HideUI(GameObject uiObject) { float timer 0f; while (timer 1f) { float scaleValue hideCurve.Evaluate(timer); uiObject.transform.localScale Vector3.one * scaleValue; timer Time.deltaTime * animationSpeed; yield return null; } } /// summary /// 开始播放显示动画 /// /summary public void StartShowAnimation() { if (targetObject ! null) { StartCoroutine(ShowUI(targetObject)); } } /// summary /// 开始播放隐藏动画 /// /summary public void StartHideAnimation() { if (targetObject ! null) { StartCoroutine(HideUI(targetObject)); } } }使用方法将脚本挂载到任意GameObject上在Inspector面板中配置显示曲线showCurve和隐藏曲线hideCurve设置动画速度animationSpeed和目标对象targetObject通过调用StartShowAnimation()或StartHideAnimation()方法触发动画也可以在代码中直接调用协程方法StartCoroutine(ShowUI(targetObject))结语可以再研究一下这个曲线建议在实际使用中根据需求进一步扩展功能集成到更复杂的UI动画系统中。

相关新闻

最新新闻

日新闻

周新闻

月新闻