2.5.1.1 【Shader】UI上Shader关键帧K帧方案
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
[ExecuteAlways]//在编辑器和运行时都有效
public class ShaderControl : MonoBehaviour
{
public Color ColorA = Color.black;//暴露颜色参数
public Color ColorB = Color.black;
public Color ColorC = Color.black;
public float FloatA = 0.5f;//暴露浮点数参数
public float FloatB = 0.5f;
public float FloatC = 0.5f;
public Vector4 VectorA = new Vector4(1.0f, 1.0f, 1.0f, 1.0f);//暴露矢量四参数
public Vector4 VectorB = new Vector4(1.0f, 1.0f, 1.0f, 1.0f);
public Vector4 VectorC = new Vector4(1.0f, 1.0f, 1.0f, 1.0f);
Material myMaterial;//创建内部参数
void Start()
{
Image image = GetComponent<Image>();//获取组件Image
myMaterial = image.material;
}
void Update()
{
myMaterial.SetColor("_Color_AAAAA", ColorA);//使用暴露参数控制材质内参数
myMaterial.SetColor("_Color_BBBBB", ColorB);
myMaterial.SetColor("_Color_CCCCC", ColorC);
myMaterial.SetFloat("_Float_AAAAA", FloatA);
myMaterial.SetFloat("_Float_BBBBB", FloatB);
myMaterial.SetFloat("_Float_CCCCC", FloatC);
myMaterial.SetVector("_Vector_AAAAA", VectorA);
myMaterial.SetVector("_Vector_BBBBB", VectorB);
myMaterial.SetVector("_Vector_CCCCC", VectorC);
}
}
