在开发《Anchor》的时候发现 Unity 暂时不支持在代码中直接替换 gradient,且无法 expose 在 inspector 中,因此想出个笨办法来解决。另在 shader 中做了大于 2 色的 gradient。
OverviewSprite Unlit Master
用 Shader 创建 Material 并应用在 sprite 上
shader 一共三个部分:Original Gradient、Target Gradient、Lerp Control
GradientOriginal 和 Target 一样
按 gradient 的 colorkey 个数可以自行添加更多 Lerp Node
Lerp ControlLerpStatus 可以看作是 A 到 B 的百分比进度,被限制在 0 到 1 之间,可以按需修改成 Time Node 等
属性总览
代码随便放在谁身上,inspector 中调好想要的 gradients
测试用,写的粗糙了点
public SpriteRenderer spriteRenderer;
//Inspector 中自己设置的 Gradients
public Gradient gradientOriginal;
public Gradient gradientTarge