【问题标题】:How to make color of object in unity 100% opaque如何使统一对象的颜色100%不透明
【发布时间】:2019-03-07 14:48:32
【问题描述】:

我将颜色 alpha 设置为 1.0f,我将着色器设置为透明/漫反射

color = new Color(255/255f, 0/255f, 0/255f, 1f) //unity scales color to 1 AFAIK
go.GetComponent<Renderer>().material.color = color;
go.GetComponent<Renderer>().material.shader = Shader.Find("Legacy Shaders/Transparent/Diffuse");

但我仍然可以看到红色背后的原始纹理。我怎样才能把它整个涂成红色,这样我就看不到原来的纹理了?

谢谢

【问题讨论】:

    标签: c# unity3d colors renderer


    【解决方案1】:

    你可以将材质纹理设置为空吗?像这样->

    go.GetComponent().materials[1].mainTexture = null;

    【讨论】:

    • 感谢这工作!但我有一个问题,也许它很愚蠢。颜色是否会像之前的纹理那样干扰对象的“默认颜色”?当我将纹理颜色 alpha 设置为 100% 时,纹理可见仍然没有太大意义。你知道为什么吗?
    • 我不太确定,但我认为默认颜色只会给纹理染色。
    • @Filip12345 如果纹理可以为空,则不需要具有此类要求的着色器。使用一种默认着色器,可以直接为您提供纯色。
    • @Filip12345 两件事:访问该材质将自动为该对象克隆它(如果您不想克隆它,请使用sharedMaterial)。之所以可行,是因为着色器假定没有纹理是全白的。
    • @XenoRo 我认为标准着色器会这样做,但他没有,他根本没有响应 alpha - 总是相同级别的透明度。
    猜你喜欢
    • 1970-01-01
    • 2016-09-02
    • 2013-06-19
    • 2010-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多