找回密码
 注册帐号

扫一扫,访问微社区

回帖奖励 20 蛮牛币 回复本帖可获得 4 蛮牛币奖励! 每人限 1 次

为什么Color.Lerp的线性差值,时间设置非常大,却变化的如此之快?

1
回复
614
查看
[ 复制链接 ]
4四处流浪
305/500
排名
9679
昨日变化

13

主题

69

帖子

305

积分

Rank: 4

UID
202813
好友
0
蛮牛币
93
威望
0
注册时间
2017-1-17
在线时间
107 小时
最后登录
2020-8-17
2017-4-19 09:55:42 显示全部楼层 阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
本帖最后由 dreamCirno 于 2017-4-19 10:15 编辑

目的:我想通过Color.Lerp(),将Canvas里的Text的颜色淡出,也就是将文字颜色的透明度平滑至0
[AppleScript] 纯文本查看 复制代码
    public Text m_Text;
 
    void Update()
    {
        FadeText();
    }
 
    void FadeText()
    {
        m_Text.color = Color.Lerp(m_Text.color, new Color(255,0,0,0), 3f);
        Debug.Log(m_Text.color);
    }


我很不能理解为什么这个文字颜色是秒变透明度为0的,有知道的大牛帮助我吗?
回复

使用道具 举报

4四处流浪
305/500
排名
9679
昨日变化

13

主题

69

帖子

305

积分

Rank: 4

UID
202813
好友
0
蛮牛币
93
威望
0
注册时间
2017-1-17
在线时间
107 小时
最后登录
2020-8-17
楼主 2017-4-19 12:16:10 显示全部楼层
已解决。
分析一下这段代码有什么问题。
关于Color.Lerp(a,b,t);
a是颜色的起始点,b是颜色的终止点,t的范围只有0-1(可以将它看作从颜色a到颜色b的百分比进度)。
1、a
但我第一个参数并不能这么写,m_Text.Color,因为这个颜色是实时变化的,所以第一个参数并不符合初始颜色。

2、b
那么第二个参数,Color类的参数只在0-1之间。
如果要使用颜色取样器里的RGB值的话,例如new Color(255,0,0)这是错误的。
有两种方式可以解决:
(1)、new Color(颜色取样器的R值/255,颜色取样器的G值/255,颜色取样器的B值/255,颜色取样器的A值/255);
(2)、new Color32(颜色取样器的R值,颜色取样器的G值,颜色取样器的B值,颜色取样器的A值);

3、t
既然是百分比,我们可以通过Time.deltaTime这个时间增量来做。
[C#] 纯文本查看 复制代码
    private m_TargetTime=3;     //表示达到目标时间需3秒
    private m_Time=0;     //表示从方法运行时开始计时的变量

    void Update()
    {
        FadeText()
    }

    void FadeText()
    {
        m_Time += Time.deltaTime;
        m_Text.color = Color32.Lerp(Color.red, new Color32(255, 0, 0, 0), m_Time / m_TargetTime);
    }

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

蛮牛教育10.1大促销!全站6折扣!