我想访问两个属性 _Color
和 _Color2
并希望使用脚本更改这些值,因为我们可以看到该值的格式为 (1, 1,1,1)
那么我怎样才能改变它的基本颜色值。
Shader "Custom/SpriteGradient"
{
Properties
{
[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}
_Color("LeftColor", Color) = (1,1,1,1)
_Color2("RightColor", Color) = (1,1,1,1)
_Scale("Scale", Float) = 1
_StencilComp("Stencil Comparison", Float) = 8
_Stencil("Stencil ID", Float) = 0
_StencilOp("Stencil Operation", Float) = 0
_StencilWriteMask("Stencil Write Mask", Float) = 255
_StencilReadMask("Stencil Read Mask", Float) = 255
_ColorMask("Color Mask", Float) = 15
// see for example
// http://answers.unity3d.com/questions/980924/ui-mask-with-shader.html
}
...
}
最佳答案
API 的修改示例
void Start()
{
//Get the Renderer component from this object
var renderer = GetComponent<Renderer>();
var material = renderer.material;
//Call SetColor using the shader property name "_Color" and "_Color2" and setting their color to red
material.SetColor("_Color", Color.red);
material.SetColor("_Color2", new Color(1, 0, 0, 1));
}
名称表示实际的属性名称,而不是显示名称。您还可以获得实际的属性名称,例如通过选择着色器资源并检查检查器
关于unity-game-engine - 如何在脚本中访问统一着色器属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60004238/