Spine动态修改图片的颜色问题,在场景中的spine可以用下方的代码来修改颜色且不影响其他的同名spine的颜色显示效果
MaterialPropertyBlock mpb = new MaterialPropertyBlock();
mpb.SetColor(name,color);
meshRenderer.SetPropertyBlock(mpb);
但是我如果是在ui上用SkeletonGraphic ,没有找到相近的功能的代码!
Spine中修改重复动画的颜色问题
是否要修改 SkeletonGraphic 的主要颜色? 如果是这样,那么您可以简单地修改 skeletonGraphic.color
。 SkeletonGraphic
是 MaskableGraphic
的子类,因此提供相同的 API(参见 此处 或 此处)。
Do you want to modify the main color of the SkeletonGraphic? If so, then you can simply modify skeletonGraphic.color
. SkeletonGraphic
is a subclass of MaskableGraphic
and therefore offers the same API (see here or here).
不是的,我想要给添加的shader修改参数,比如说SetColor SetFloat, SetInt 等,我在场景的spine可以通过MaterialPropertyBlock来设置,但是ui的Spine用SkeletonGraphic的无法使用MaterialPropertyBlock这么方便来更改shader的属性
不幸的是,我们在这里受到 Unity 的限制,因为 CanvasRenderer
(UI 元素)不支持分配任何类似 MaterialPropertyBlock
的东西。 请在此处查看 Unity 论坛上的讨论:
https://forum.unity.com/threads/big-problem-with-lacking-materialpropertyblock-for-ui-image.506941/
您可以通过例如直接设置材料的参数 canvasRenderer.GetMaterial().SetColor(..);
。
Unfortunately we are limited by Unity here, since CanvasRenderer
(UI elements) does not support anything like MaterialPropertyBlock
to be assigned. See the discussion on the Unity forum here:
https://forum.unity.com/threads/big-problem-with-lacking-materialpropertyblock-for-ui-image.506941/
You could directly set the material's parameters via e.g. canvasRenderer.GetMaterial().SetColor(..);
.