Unity中暂停、继续播放、杀死、正放、倒放Dotween动画

此案例是控制material(材质球)的alpha(透明度)值,对有MeshRenderer的Model外观有不停的渐隐渐显效果

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;


public class Demo01 : MonoBehaviour
{
    /// <summary>
    /// Model的MeshRenderer
    /// </summary>
    public MeshRenderer meshRenderer;

    private void Start()
    {
        Color color= meshRenderer.material.color;
        color.a = 120f / 255f;

        MyPingPong(meshRenderer.material.color,color);
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Q))  
        {
            DOTween.Pause("move");        //只暂停ID为move的动画,可以继续播放
        }
        if (Input.GetKeyDown(KeyCode.W))  
        {
            DOTween.Play("move");       //继续播放ID为move
        }
        if (Input.GetKeyDown(KeyCode.E))  
        {
            DOTween.Kill("move");         //杀死ID为move补间动画,不能再播放
        }
        if (Input.GetKeyDown(KeyCode.R))    
        {
            DOTween.PlayForward("move");      //正放ID为move动画
        }
        if (Input.GetKeyDown(KeyCode.T))
        {
            DOTween.PlayBackwards("move");      //倒放ID为move动画,倒放不会循环
        }
    }

    /// <summary>
    /// 控制Model渐隐渐显效果
    /// </summary>
    private void MyPingPong(Color a, Color b)
    {
        DOTween.To(()=>meshRenderer.material.color,x=>meshRenderer.material.color=x,b,0.5f).OnComplete(()=>MyPingPong(b,a)).SetId<Tween>("move");
    }
}

  • 11
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
要在Unity轮流播放DoTween和Curvy动画,您可以使用协程和yield语句来实现。 以下是一个简单的示例代码: ```csharp using UnityEngine; using System.Collections; using DG.Tweening; using Curvy; public class AnimationController : MonoBehaviour { public CurvySpline spline; public GameObject objectToAnimate; private bool isTweening; private bool isCurvyAnimating; void Start() { isTweening = false; isCurvyAnimating = false; StartCoroutine(Animate()); } IEnumerator Animate() { while (true) { if (!isTweening && !isCurvyAnimating) { // 播放DoTween动画 isTweening = true; objectToAnimate.transform.DOMoveX(5f, 1f).OnComplete(() => { isTweening = false; }); } else if (!isTweening && isCurvyAnimating) { // 暂停Curvy动画 isCurvyAnimating = false; spline.gameObject.SetActive(false); yield return new WaitForSeconds(1f); } else if (isTweening && !isCurvyAnimating) { // 播放Curvy动画 isCurvyAnimating = true; spline.gameObject.SetActive(true); spline.Play(); yield return new WaitForSeconds(1f); } } } } ``` 在这个示例,我们使用了一个while循环来不断地检查当前是否正在播放动画。如果没有正在播放任何动画,则播放DoTween动画。如果正在播放DoTween动画,则暂停DoTween动画并开始播放Curvy动画。如果正在播放Curvy动画,则暂停Curvy动画并重新开始DoTween动画。 要实现这种轮流播放的效果,我们使用了协程和yield语句来等待一段时间,然后再继续播放下一个动画。在这个示例,我们等待1秒钟,然后再继续播放下一个动画。您可以根据需要调整等待时间。 最后,我们建议您使用DOTween和Curvy插件来创建和控制动画。这些插件可以帮助您更轻松地创建和管理复杂的动画效果。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Defining the Future

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值