LF521521521 2022-10-23 21:20 采纳率: 25%
浏览 48

为什么Unity中,不能直接更改物体颜色的透明度

为什么Unity中,不能直接更改物体颜色的透明度

直接更改是不可以的:
private MeshRenderer render;
private float FadeSpeed = 10;

    private void Start()
    {
        render = GetComponent<MeshRenderer>();
    }
    private void OnGUI()
    {
        if (GUILayout.Button("淡入淡出"))
        {
            StartCoroutine(Fadeout());
        }
    }
    private IEnumerator Fadeout()
    {
        Color currentColor = render.material.color;
        while(currentColor.a>0)
        {
            render.material.color.a -= 0.01f;
            yield return null;
        }
    }

必须将循环中的内容换成: private IEnumerator Fadeout()
{
Color currentColor = render.material.color;
while(currentColor.a>0)
{
currentColor.a -= 0.01f;
render.material.color = currentColor;
yield return null;
}
}
请问是为什么呢

  • 写回答

1条回答 默认 最新

  • 新进干员 2022-10-24 09:19
    关注

    因为你没有修改设置材质的渲染模式(RenderingMode),需要改成Transparent
    SetMaterialRenderingMode (GetComponent ().material, RenderingMode.Transparent);

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 10月23日

悬赏问题

  • ¥15 uniapp的h5项目写一个抽奖动画
  • ¥15 TeleScan不能修改bar
  • ¥100 请问我基于逐飞库写的这个有关于mp u6050传感器的函数,为什么输出的值是固定的?
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息
  • ¥15 Spring Boot离线人脸识别
  • ¥15 使用Ant Design Pro vue的时候,使用环境变量的时候,构建报错是什么原因
  • ¥15 NRF24L01能发送但是不能接收