无法在Unity中的自定义着色器中设置动画或更改颜色?

天国

好的,我是着色器的新手,但是我找不到在连接到材质的自定义着色器中设置动画甚至更改颜色值的方法。

我在天空盒中使用了材质,它是一个带有3个属性的渐变,声明如下:

Shader "Custom/Horizontal Skybox"
{
    Properties
    {
        _Color1 ("Top Color", Color) = (1, 1, 1, 0)
        _Color2 ("Horizon Color", Color) = (1, 1, 1, 0)
        _Color3 ("Bottom Color", Color) = (1, 1, 1, 0)
        _Exponent1 ("Exponent Factor for Top Half", Float) = 1.0
        _Exponent2 ("Exponent Factor for Bottom Half", Float) = 1.0
        _Intensity ("Intensity Amplifier", Float) = 1.0
    }

我查看了Unitys文档,并尝试更改底部颜色(最终使效果变暗,因此它是动画的,尽管我不知道该怎么做),如下所示:

skybox.SetColor ("_Color3", afterColor);

该材料是公共变量。我也尝试写“底色”作为参数,但是当它运行时什么也没发生。我不明白为什么。

如何在自定义着色器中更改颜色?此外,一旦完成,如何为该更改设置动画?

编辑:@Programmer着色器是附加到材质对象的.shader文件。着色器代码(我不是将其写为着色器的新手):

Shader "Custom/Horizontal Skybox"
{
    Properties
    {
        _Color1 ("Top Color", Color) = (1, 1, 1, 0)
        _Color2 ("Horizon Color", Color) = (1, 1, 1, 0)
        _Color3 ("Bottom Color", Color) = (1, 1, 1, 0)
        _Exponent1 ("Exponent Factor for Top Half", Float) = 1.0
        _Exponent2 ("Exponent Factor for Bottom Half", Float) = 1.0
        _Intensity ("Intensity Amplifier", Float) = 1.0
    }

    CGINCLUDE

    #include "UnityCG.cginc"

    struct appdata
    {
        float4 position : POSITION;
        float3 texcoord : TEXCOORD0;
    };

    struct v2f
    {
        float4 position : SV_POSITION;
        float3 texcoord : TEXCOORD0;
    };

    half4 _Color1;
    half4 _Color2;
    half4 _Color3;
    half _Intensity;
    half _Exponent1;
    half _Exponent2;

    v2f vert (appdata v)
    {
        v2f o;
        o.position = mul (UNITY_MATRIX_MVP, v.position);
        o.texcoord = v.texcoord;
        return o;
    }

    half4 frag (v2f i) : COLOR
    {
        float p = normalize (i.texcoord).y;
        float p1 = 1.0f - pow (min (1.0f, 1.0f - p), _Exponent1);
        float p3 = 1.0f - pow (min (1.0f, 1.0f + p), _Exponent2);
        float p2 = 1.0f - p1 - p3;
        return (_Color1 * p1 + _Color2 * p2 + _Color3 * p3) * _Intensity;
    }

    ENDCG

    SubShader
    {
        Tags { "RenderType"="Background" "Queue"="Background" }
        Pass
        {
            ZWrite Off
            Cull Off
            Fog { Mode Off }
            CGPROGRAM
            #pragma fragmentoption ARB_precision_hint_fastest
            #pragma vertex vert
            #pragma fragment frag
            ENDCG
        }
    } 
}

尝试使用空白中的脚本使用这样的公共变量更改此设置:

public Material skybox;
public Color afterColor;

void Start () {

        chars = GameObject.FindGameObjectsWithTag("BeginChar");
        balls = GameObject.FindGameObjectsWithTag ("Ball");
        StartCoroutine (waitForTheRun ());

        skybox.SetColor ("_Color3", afterColor); //here

    }

在此处输入图片说明

程序员

您的代码没有发现任何问题。

尝试的事情:

1。您必须将skybox3素材插入天空盒插槽。之后,您可以更改材料。这样可以确保您正在修改正确的材料。

在此处输入图片说明

2。直接更改SkyBox

您不必为此做#1它将修改附加到SkyBox的任何材料。

public Material skybox;
public Color afterColor = Color.white;

// Use this for initialization
public void Start()
{
    skybox = RenderSettings.skybox;
    skybox.SetColor("_Color3", afterColor); //here
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义着色器不再在Unity 5中工作

来自分类Dev

在GLSL着色器中更改颜色

来自分类Dev

自定义 phong 着色器

来自分类Dev

如何在R中沿着ggplot的轴添加自定义着色器?

来自分类Dev

自定义着色器不受Three.js中的雾影响

来自分类Dev

如何在ThreeJS中更改着色器颜色

来自分类Dev

有没有一种方法可以使Blend中的自定义着色器效果属性动画化?

来自分类Dev

无法在OpenGL着色器中设置统一值

来自分类Dev

在Unity自定义检查器中设置枚举控件

来自分类Dev

设置自定义着色器会弄乱Sprite的比例和位置

来自分类Dev

Three.js,自定义着色器,填充png纹理并设置透明度?

来自分类Dev

Unity中的多层纹理着色器

来自分类Dev

在PhpStorm中设置自定义颜色

来自分类Dev

自定义和通用顶点着色器属性在OpenGL和OpenGL ES中的使用

来自分类Dev

为什么iOS 8上的SceneKit无法编译我的自定义着色器?

来自分类Dev

自定义着色器在Android上导致黑屏

来自分类Dev

libGDX-TextButton字体的自定义着色器

来自分类Dev

自定义着色器不接收光

来自分类Dev

如何在 Flutter 中为自定义画家的颜色设置动画?

来自分类Dev

在片段着色器中的OpenGL中更改纹理的颜色效果不佳

来自分类Dev

如何使用OpenGL在着色器中设置顶点的颜色

来自分类Dev

在片段着色器中仅更改一个颜色通道

来自分类Dev

WebGL:更改片段着色器中的颜色饱和度或亮度

来自分类Dev

WebGL:更改片段着色器中的颜色饱和度或亮度

来自分类Dev

iOS 7-无法在自定义UITableView单元格中设置UITextView的字体颜色

来自分类Dev

如何在视图控制器的背景中设置自定义颜色

来自分类Dev

无法在 android 中更改自定义操作栏背景颜色

来自分类Dev

Unity ShaderLab中的像素完美着色器

来自分类Dev

如何在Unity着色器中偏移普通UV?

Related 相关文章

  1. 1

    自定义着色器不再在Unity 5中工作

  2. 2

    在GLSL着色器中更改颜色

  3. 3

    自定义 phong 着色器

  4. 4

    如何在R中沿着ggplot的轴添加自定义着色器?

  5. 5

    自定义着色器不受Three.js中的雾影响

  6. 6

    如何在ThreeJS中更改着色器颜色

  7. 7

    有没有一种方法可以使Blend中的自定义着色器效果属性动画化?

  8. 8

    无法在OpenGL着色器中设置统一值

  9. 9

    在Unity自定义检查器中设置枚举控件

  10. 10

    设置自定义着色器会弄乱Sprite的比例和位置

  11. 11

    Three.js,自定义着色器,填充png纹理并设置透明度?

  12. 12

    Unity中的多层纹理着色器

  13. 13

    在PhpStorm中设置自定义颜色

  14. 14

    自定义和通用顶点着色器属性在OpenGL和OpenGL ES中的使用

  15. 15

    为什么iOS 8上的SceneKit无法编译我的自定义着色器?

  16. 16

    自定义着色器在Android上导致黑屏

  17. 17

    libGDX-TextButton字体的自定义着色器

  18. 18

    自定义着色器不接收光

  19. 19

    如何在 Flutter 中为自定义画家的颜色设置动画?

  20. 20

    在片段着色器中的OpenGL中更改纹理的颜色效果不佳

  21. 21

    如何使用OpenGL在着色器中设置顶点的颜色

  22. 22

    在片段着色器中仅更改一个颜色通道

  23. 23

    WebGL:更改片段着色器中的颜色饱和度或亮度

  24. 24

    WebGL:更改片段着色器中的颜色饱和度或亮度

  25. 25

    iOS 7-无法在自定义UITableView单元格中设置UITextView的字体颜色

  26. 26

    如何在视图控制器的背景中设置自定义颜色

  27. 27

    无法在 android 中更改自定义操作栏背景颜色

  28. 28

    Unity ShaderLab中的像素完美着色器

  29. 29

    如何在Unity着色器中偏移普通UV?

热门标签

归档