@fengmin The problem should not be using Mix and Match or using skins. You should be either modifying the skeleton's _Material assets (next to your other exported skeleton assets) if you want to set a special shader for all skeleton Instances and never want to use the default Spine/Skeleton
shader.
Otherwise if you want to assign a custom Material, you have the options in the documentation:
https://zh.esotericsoftware.com/spine-unity-rendering#Materials
You could be using the SkeletonRendererCustomMaterials
component or using SkeletonRenderer.CustomMaterialOverride
programmatically.
MaterialPropertyBlock
unfortunately can't change the shader, so you have to use a different material. You can use MaterialPropertyBlock
each frame to change a float Material property though.
Apart from that, if you are repacking a Skin via GetRepackedSkin()
you can also set the Material materialPropertySource
parameter (see here) to the desired template Material, of which the shader settings will be used, or use the GetRepackedSkin()
variant providing a Shader shader
property (see here).