Unity代码动态改变unity物体材质球颜色变白问题

今天碰到另外一种改变材质球颜色的代码,试验后发现出现物体变白问题,代码如下:
 

private void Start()
{
   renderer = GetComponent<Renderer>();
   StartCoroutine(ChangeColor());
}
IEnumerator ChangeColor()
{
    int i = 0, j = 100, k = 100;
    //变红
    for (i = 100; i < 255; i = i + 5)
    {
        Color c = new Color(i / 255.0f, j / 255.0f, k / 255.0f);
        renderer.material.color = c;
        yield return new WaitForSeconds(0.1f);
    }
}

多方尝试后跳转回Color构造函数查看,发现Unity官方注释如下:

//
        // 摘要:
        //     Constructs a new Color with given r,g,b components and sets a to 1.
        //
        // 参数:
        //   r:
        //     Red component.
        //
        //   g:
        //     Green component.
        //
        //   b:
        //     Blue component.
        public Color(float r, float g, float b);
        //
        // 摘要:
        //     Constructs a new Color with given r,g,b,a components.
        //
        // 参数:
        //   r:
        //     Red component.
        //
        //   g:
        //     Green component.
        //
        //   b:
        //     Blue component.
        //
        //   a:
        //     Alpha component.
        public Color(float r, float g, float b, float a);

使用new Color进行设置时传入的数值应该为0~1范围内

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中,可以使用脚本来实现材质颜色的渐效果。根据提供的两个脚本示例[1],它们都实现了材质颜色的渐效果。 这些脚本通过使用Color.Lerp函数将当前材质颜色与目标颜色之间进行插值计算,从而实现渐效果。在每个Update循环中,脚本会根据指定的时间间隔逐渐改变材质颜色。 在脚本中,使用GetComponent<MeshRenderer>().material.color来获取材质颜色,并使用Color.Lerp函数将其与目标颜色进行插值。其中,r、g、b分别表示目标颜色的红、绿、蓝分量,它们使用Random.Range函数随机生成。ChangeTimeLength表示更改颜色的时间长度或时间间隔。 在脚本中,使用Time.deltaTime*10作为插值的时间参数,脚本中则直接使用t作为时间参数。这里的Time.deltaTime表示两次Update函数调用之间的时间差。 因此,通过使用这些脚本,可以实现Unity材质颜色的渐效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Unity3D 实现3D物体材质颜色循环渐的三种方法](https://blog.csdn.net/qq_37712328/article/details/100697710)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值