我尝试将Mix and Match Equip示例 和 Per Instance Material Properties示例的内容组合使用,但结果是Per Instance Material Properties中任何更改的材质属性都没有效果,我检查了shader,是否是因为混合皮肤导致shader一直是spine/skeleton。如何才能做到在使用混合皮肤的情况下,更改角色的渲染器?
我的代码示例如下:
baseSkin = "skin/" + name;
Skeleton skeleton = skeletonAnimation.Skeleton;
SkeletonData skeletonData = skeleton.Data;
characterSkin = new Skin("character-base");
characterSkin.AddSkin(skeletonData.FindSkin(baseSkin));
if (isNotGetW)
{
return;
}
characterSkin.AddSkin(skeletonData.FindSkin(weaPonSkins));
Skeleton skeleton = skeletonAnimation.Skeleton;
Skin resultCombinedSkin = new Skin("character-combined");
resultCombinedSkin.AddSkin(characterSkin);
Skeleton skeleton = skeletonAnimation.Skeleton;
SkeletonData skeletonData = skeleton.Data;
skeleton.SetSkin(resultCombinedSkin);
skeleton.SetSlotsToSetupPose();
MaterialPropertyBlock mpb = new MaterialPropertyBlock();
mpb.SetFloat("_GrayPhase", 0.7f);
enemyAnimator.GetComponent<SkeletonAnimation>().GetComponent<Renderer>().SetPropertyBlock(mpb);