• RuntimesUnity
  • 如何在SkeletonGraphic(UI)中使用像SkeletonAnimation一样的材质?

我因为一些原因,不得不使用SkeletonGraphic(UI),而当我使用SkeletonGraphic(UI)时,发现原本的多个材质球变成了一个,导致出现了很多的渲染错误
渲染错误如下:
1、我在制作中有使用到相乘的混合模式,但是因为相乘的材质球消失了,原本使用混合模式为相乘的部分全都以正常的混合模式显示了。
2、我在制作中,因为小零件较多,所以它自动生成了很多材质部分以及多张材质贴图,用以渲染不同的部分,但是因为多个材质球变成了一个,所以这些多出来的部分全部都渲染错误了。

我该如何在SkeletonGraphic(UI)中使用像SkeletonAnimation一样的、多个材质球?

Related Discussions
...

SkeletonGraphic 组件中使用多个材质球确实存在一些限制,主要是由于 Unity 的 CanvasRenderer 只支持单一材质和单一纹理。以下是一些可能的解决方案:

  1. 启用 Multiple Canvas Renderers:
    SkeletonGraphic 组件的 Inspector 中,点击 Advanced... 并启用 Multiple Canvas Renderers。这将生成多个 CanvasRenderer 以支持多个材质。

  2. 使用单一纹理:
    确保所有活动的附件都在同一张纹理图上。你可以在导出时将所有附件打包到一个单一的纹理图中,或者在运行时重新打包皮肤到一个单一的纹理图中。

  3. 使用兼容的材质:
    确保你使用的是 SkeletonGraphic 兼容的着色器。你可以在 SkeletonGraphic 组件中分配一个兼容的材质,该材质应使用 Spine/SkeletonGraphic* 着色器。

  4. 自定义解决方案:
    如果上述方法不能满足你的需求,你可以考虑自定义 SkeletonGraphic 组件。例如,你可以创建一个子类或基于现有代码的类,并根据需要修改它以支持更多的功能。

以下是一些相关的文档和示例链接,供你参考:

希望这些信息能帮助你解决在 SkeletonGraphic 中使用多个材质球的问题。

    好的,我去尝试一下

    Spinebot
    你好,我使用了你的方案1,现在又遇到了新的问题
    方案1解决了大部分问题,使我大部分没有自己更改材质的内容全部正确显示了
    但是有一部分并没有正确解决
    我有一个skeleton所使用的材质是我自己所写的,但是这个skeleton属于我先前提到的情况2,他的小零件较多,本身就存在很多材质球
    在启用Multiple Canvas Renderers下,他的相乘部分正常显示了,如果我不使用我自己的材质,它没有任何问题。
    但一旦我使用了我自己的材质,他似乎只能所有部分都使用同一张贴图,导致不该使用这张帖图渲染的部分全部出错了。
    而这个skeleton的效果制作起来很麻烦,因为我绘制了很多的遮罩图,法线图,颜色图,如果要我将他们打包到单一纹理图的话,意味着我需要全部重新绘制。
    请问有没有除此以外的解决办法

    @momomo Glad to hear that you've figured out your first problem by enabling Multiple CanvasRenderers.

    Regarding your remaining issue: Unfortuantely machine translation of your problem description was not very clear. Do you mean that you are replacing Materials with your own Materials? How did you assign your own materials, could you share code and screenshots describing what you're doing? Are you using a SkeletonGraphicCustomMaterials component? Please note that SkeletonGraphic is not using the normal skeleton Materials in the assets folder, as these can't be used with UI CanvasRenderer objects.

    Did you check out the documentation section on Materials below?
    https://zh.esotericsoftware.com/spine-unity-rendering#Materials

      Harald
      感谢您提供的资料,我通过阅读该份资料解决了我的问题,非常感谢您。

      @momomo Glad to hear you've figured it out, thanks for getting back to us.