Unity 如果使用DOColor对Image进行循环渐隐的话 DOColor和image.color=new Color()不能同时使用 否者 DOColor会失效

今天在做一个图片颜色渐隐效果时,第一反应就是使用DOClor来实现,然后我发现DOColor并没有效果,失效了一下,用了大半天的时间才找出导致DOColor失效的原因,竟然是因为image.color = new Color(255, 255, 255, 255);这样代码,

逻辑是这样的:
我先把图片重置为白色,使用了

image.color = new Color(255, 255, 255, 255);

然后在后续的操作中图片需要渐变的绿色,循环渐变,使用了

image.DOColor(Color.green, 0.5F).SetEase(Ease.InSine).SetLoops(-1);

最后在运行的时候发现图片并没有渐变到绿色,图片仍然是白色,然后就一直找原因,
百度并没有查到DOColor为什么失效的任何相关文章,
自己创建一个空脚本只写了
image.DOColor(Color.green, 0.5F).SetEase(Ease.InSine).SetLoops(-1);
然后创建Image,挂在脚本,发现并没有任何问题呀,又重新把逻辑代码看来一变是不是逻辑哪里写错了导致DOColor失效,仍然没有找到问题,
最后实在没办法,我就吧代码都注释掉,一个方法一个方法的取消注释,看看那个方法导致的,
然后就发现写有image.color = new Color(255, 255, 255, 255);代码的方法导致的,我就吧这行代码注释掉了,就好使了,

没想到,没想到啊,这行代码浪费了我大半天的时间,(欲哭无泪),今天在这里记录一下,方便以后哪位同志也遇到我这问题了,至少百度一下能查到这个文章,或许正好帮助解决了问题,

下面是我写的测试代码,证明DOColor和image.color=new Color()不能同时对一个image使用

创建一个空场景,然后创建一个Image 吧这脚本挂载上,
运行不注释image.color = new Color(255, 255, 255, 255);的效果,和注释掉的效果


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

public class NewBehaviourScript : MonoBehaviour
{
    Image image;
    // Start is called before the first frame update
    void Start()
    {
        image = GetComponent<Image>();
        image.color = new Color(255, 255, 255, 255);
        image.DOColor(Color.green, 0.5F).SetEase(Ease.InSine).SetLoops(-1);


    }

    // Update is called once per frame
    void Update()
    {
        
    }
}

至于为什么image.color = new Color();会影响到DOColor的原因我也不知道,要是有哪位大神知道的话,帮忙留言解释一下,万分感谢

今天上午问了其他同事,
把image.DOColor(Color.green, 0.5F).SetEase(Ease.InSine).SetLoops(-1);中的SetEase(Ease.InSine)删除掉,再运行就好使了,
然后我又重新加上了,居然也好使了,但是还是不知道具体导致DOColor失效的原因,

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值