Unity 随时间推移逐渐淡化图像 alpha

2024-02-01

我想逐渐改变我的 UI 图像的 Alpha,而不是立即改变。到目前为止,我立即淡化图像 Alpha 的代码如下

public void Highlight()
{
    foreach (Image image in imagesToHighlight)
    {
        Color c = image.color;
        if(c.a < maxColor)
        {
            c.a = maxColor;
        }

        image.color = c;
    }

    foreach (Image image in imagesToFade)
    {
        Color c = image.color;
        if(c.a > halfColor)
        {
            c.a = halfColor;
        }
        image.color = c; 

    }

}

上面的代码工作正常,但我正在努力修改我的代码,以便它不是立即执行,而是在一两秒内缓慢执行。我尝试过改变线路c.a = maxColor; to c.a--为了查看图像是否会持续缓慢淡出,但 alpha 值会立即下降。

我究竟做错了什么?


Use Coroutine来实施这一点。像这样的事情:

FadeOut:

private YieldInstruction fadeInstruction = new YieldInstruction();
IEnumerator FadeOut(Image image)
{
    float elapsedTime = 0.0f;
    Color c = image.color;
    while (elapsedTime < fadeTime)
    {
        yield return fadeInstruction;
        elapsedTime += Time.deltaTime ;
        c.a = 1.0f - Mathf.Clamp01(elapsedTime / fadeTime);
        image.color = c;
    }
}

你可以这样使用它:

foreach (Image image in imagesToFade)
    StartCoroutine(FadeOut(image));

FadeIn:

IEnumerator FadeIn(Image image)
{
    float elapsedTime = 0.0f;
    Color c = image.color;
    while (elapsedTime < fadeTime)
    {
        yield return fadeInstruction;
        elapsedTime += Time.deltaTime ;
        c.a = Mathf.Clamp01(elapsedTime / fadeTime);
        image.color = c;
    }
}

希望这可以帮助

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity 随时间推移逐渐淡化图像 alpha 的相关文章

随机推荐

  • Python 多处理:如何在错误后干净地退出?

    我正在编写一些使用的代码multiprocessing模块 然而 由于我是新手 经常发生的情况是弹出一些错误 导致主应用程序停止运行 但是 该应用程序的子级仍然保持运行 并且我得到一长串正在运行的列表pythonw我的任务管理器列表中的进程
  • 在 varchar 列中查找非数字值

    要求 通用查询 函数 用于检查表中 varchar 列中提供的值是否实际上是数字且精度不超过允许的精度 可用值 表名称 列名称 允许的精度 允许的小数位数 一般建议是创建一个函数并使用 to number 来验证该值 但它不会验证允许的长度
  • 如何在 Android 键盘上添加“下一步”

    我在某些应用程序中看到键盘中出现一个名为 next 的按钮 它将焦点放在下一个编辑文本上 我想将其添加到我的应用程序中 你知道我该怎么做吗 或者它仅在应用程序的键盘上 多谢 抱歉 我没有这方面的更多信息 在edittext的布局中添加and
  • C/C++ 中结构体的字段对齐

    结构体的成员是用 C C 封装的吗 我所说的打包是指它们是紧凑的 并且字段之间没有内存空间 这不是对齐的意思 并且不保证任何特定的对齐或打包 元素将按顺序排列 但编译器可以在其选择的位置插入填充 这其实creates 有用的 对齐 例如 对
  • Angular 服务与导出

    我有一组简单的工具方法 没有任何状态可以在应用程序中共享 不需要是单例 也不需要任何注入的服务 使用注射服务有什么优势吗 Injectable export class DateService public convertStringToD
  • SDL 错误架构 x86_64“_SDL_main”的未定义符号

    我在 mac os x 上将 C 与 SDL Cocoa 和 Foundation 框架结合使用 我收到以下错误 Undefined symbols for architecture x86 64 SDL main referenced f
  • 如何在 Jekyll / Github 页面站点的 config.yml 中的新选项卡中打开 URL?

    我是自学成才 对 Jekyll 和 Github Pages 完全陌生 并且想知道如何在 config yml 页面中使用 markdown 在新选项卡中打开 URL This https aweekj github io Kiko plu
  • 添加不同的形状到 d3 力布局

    我试图将不同的形状添加到我的 d3 力布局中 但没有成功 最终目标是根据节点对象本身的属性确定形状 我使用 Selection enter 然后 append 形状像这样 由于力导向布局仅采用一组节点 而 append 采用字符串而不是函数
  • PostgreSQL:创建索引以快速区分NULL和非NULL值

    考虑具有以下内容的 SQL 查询WHERE谓词 WHERE name IS NOT NULL Where name是 PostgreSQL 中的文本字段 没有其他查询检查该值的任何文本属性 只是检查它是否是NULL或不 所以 完整的 btr
  • 如何在 Visual Studio 2012 中创建/打开 DAC 应用程序?

    我很难弄清楚如何使用 Visual Studio 2012 实际创建甚至打开 DAC 应用程序 我使用的是 SQL Server 2012 我安装了 SSDT 从 Visual Studio 创建 根据在线文档 我应该能够看到名为 数据层应
  • Android Studio 3.1:编辑器中错误的未解析引用

    我正在运行 Ubuntu 17 10 并且刚刚更新安卓工作室从版本 3 0 1 到 3 1 以下是 帮助 gt 关于 中的版本信息 Android Studio 3 1 Build AI 173 4670197 built on March
  • Spark DataFrame 的 SparkRcollect() 和 head() 错误:参数意味着行数不同

    我从 HDFS 系统读取了 parquet 文件 path lt hdfs part 2015 AppDF lt parquetFile sqlContext path printSchema AppDF root app binary n
  • 嵌套类会产生什么后果? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我有这个示例代码 带有一个类B嵌套在类内部A class A class B count 0 def init self b1 None b2
  • 使用 CORS 和 IE9 的 ASP Web API POST 请求(XDomainRequest 对象)

    我一直在疯狂地尝试让 jquery ajax 与 ie9 一起工作 所以我有一个实现 CORS 的 ASP Web API 2 Rest API 来自所有浏览器的 CORS 请求都有效 IE9 无法工作 因为它使用 XDomainReque
  • 错误:ConnectionResult{statusCode=INTERNAL_ERROR,分辨率=null}

    我正在开发应用程序 将 Google Drive 集成到我的应用程序中 下面是我的代码 我只是从示例代码中复制而来 但在连接 Google Drive 时出现异常 例外 ConnectionResult statusCode INTERNA
  • 如何使用给定的装饰器获取Python类的所有方法?

    如何获取给定类 A 的所有用 decorator2 class A def method a self pass decorator1 def method b self b pass decorator2 def method c sel
  • 根据字符串的偏移值将字符串拆分为多个部分

    下面是文本 我想根据以下内容分为多个部分offset length 您有疑问或意见并希望联系 ABC 吗 请访问我们的客户支持页面 下面是根据文本提取文本的函数offset length let offset 83 let length 1
  • 如何选择数据并将其添加到特定行? [复制]

    这个问题在这里已经有答案了 如何循环遍历一列中的值以查找一组特定的字符 然后 如果该行包含这些字符 则在新列中专门为该行分配一个值 例如 在这个问题中 我们必须为每个不同意的回答分配一分 为同意的回答分配零分 Id Gender Age P
  • 或者在 IF 语句中无法正常工作

    我在 Windows 窗体 C 程序的 IF 语句 在 foreach 循环中 中有此 Or 条件 if splittedFile Count 3 splittedFile Count 4 continue 它总是如此continue 即使
  • Unity 随时间推移逐渐淡化图像 alpha

    我想逐渐改变我的 UI 图像的 Alpha 而不是立即改变 到目前为止 我立即淡化图像 Alpha 的代码如下 public void Highlight foreach Image image in imagesToHighlight C