今天在做一个图片颜色渐隐效果时,第一反应就是使用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;
void Start()
{
image = GetComponent<Image>();
image.color = new Color(255, 255, 255, 255);
image.DOColor(Color.green, 0.5F).SetEase(Ease.InSine).SetLoops(-1);
}
void Update()
{
}
}
至于为什么image.color = new Color();会影响到DOColor的原因我也不知道,要是有哪位大神知道的话,帮忙留言解释一下,万分感谢
今天上午问了其他同事, 把image.DOColor(Color.green, 0.5F).SetEase(Ease.InSine).SetLoops(-1);中的SetEase(Ease.InSine)删除掉,再运行就好使了, 然后我又重新加上了,居然也好使了,但是还是不知道具体导致DOColor失效的原因,
|