皮肤

皮肤可使用不同的附件集,从而实现骨架动画的重复利用。皮肤可以用于简单的服装切换,也可以用来将许多不同的部件组合成完整的角色。

皮肤由仅当皮肤可见时才处于活动状态的附件骨骼约束组成。使用皮肤视图,骨架可以同时显示多个皮肤。

皮肤的关键是“皮肤占位符”,它是一种附件,与任何其他附件一样位于层级树中的插槽下。但是,它只是将实际使用的附件的占位符,来自当前可见的皮肤。

动画可以像显示和隐藏附件一样显示和隐藏皮肤占位符,方法是设置插槽附件的关键帧。这样,动画就不再局限于显示和隐藏特定附件。而可以显示和隐藏皮肤占位符,实际显示的附件则来自可见的皮肤,从而使动画能够与任何皮肤一起使用。

使用示例请参见皮肤演示示例项目提示

设置

设置皮肤包括创建皮肤和皮肤占位符,然后使用该皮肤的附件填充皮肤占位符。也可以将骨骼和约束添加到皮肤。

选择层级树中的皮肤节点,点击新建... 皮肤可创建皮肤。

皮肤占位符

在命名皮肤占位符时,名称不需要指明它用于哪个皮肤。而应该根据附件代表的名称对其进行命名。

例如,如果你有一个red和一个blue皮肤,则head将是一个很好的头部皮肤占位符名称,而不是red headblue head

皮肤占位符是通过在层级树中选择骨骼、插槽或附件并单击新建... 皮肤占位符来创建的。选择附件后,如果骨骼没有活动皮肤,则此选项将被禁用。

已选附件

在创建新皮肤占位符之前,可以选择多个附件。将为每个对象创建一个皮肤占位符。

如果在创建新的皮肤占位符时选择了附件,该附件将被移动到新的皮肤占位符下的活动皮肤。但是,首先会显示一个提供了更多选项的对话框。某些选项将只对网格附件或有关键帧的附件显示。

  • 为每个皮肤复制附件:为每个皮肤复制附件。当添加与大多数或所有皮肤相同的附件时,此选项非常有用。
    • 链接网格:不是复制网格,而是为其他皮肤创建链接网格
      • 继承变形:链接的网格将共享源网格的变形关键帧。
    • 复制关键帧:每个动画中每个复制附件的关键帧也会被复制。
    • 重命名附件:在每个复制的附件前加上皮肤名称。例如,head,因为red/head代表red皮肤。在将每个皮肤的图片组织到子文件夹中时很有用。

属性

导出

如果不选中导出,则不会导出皮肤,即皮肤及其附件不会在导出的JSON或二进制中,也不会出现在图片或视频导出中。

如果网格附件未导出,则也不会导出其链接网格

如果附件未导出并且在动画中设置了关键帧,则不会导出关键帧。

颜色

更改皮肤的颜色可以帮助区分层级树中的皮肤,从而便于识别。皮肤颜色在运行时不起作用,仅用于Spine编辑器中的可视化。

添加到皮肤

点击添加到皮肤按钮将进入添加到皮肤模式,可以给皮肤添加皮肤骨骼皮肤约束。再次点击添加到皮肤按钮,或者按空格键escape键可以随时退出。

文件夹

可以将皮肤组织到文件夹中。要创建文件夹,请选择皮肤,然后单击新建... 文件夹。通过拖动皮肤,可以在文件夹之间移动皮肤。

在导出的骨架数据中,文件夹名称优先于皮肤名称,以创建Spine运行时使用的最终名称。例如,如果文件夹hair有一个子文件夹long,其下有一个皮肤brown,则运行时的皮肤名称为hair/long/brown

活动皮肤

层级树中每个皮肤旁边的圆点可控制哪个皮肤是“活动的”。

层级树中的皮肤占位符显示当前活动皮肤的附件。

活动皮肤是正在编辑的皮肤,并且在任何给定时间只能有一个皮肤处于活动状态。活动皮肤始终可见。

皮肤视图允许通过固定多个皮肤同时显示它们,但在任何给定时间只能有一个皮肤处于活动状态。在皮肤视图中选择一个皮肤将使其成为活动皮肤。

皮肤附件

显示所有皮肤附件可用于一次查看所有皮肤的全部皮肤附件。

对于每个皮肤占位符,皮肤可以有一个附件(或无附件)。若要为活动皮肤设置皮肤占位符的附件,请首先确保皮肤处于活动状态,然后将附件拖动到皮肤占位符或使用设置父级。活动皮肤的皮肤占位符以前的任何附件都将被删除。

如果将附件拖到皮肤占位符下的一个现有附件,而不是拖到皮肤占位符,则现有附件的变换将复制到新附件。

要清除皮肤占位符的附件,请将其删除或拖动到其他位置。

皮肤骨骼

隐藏皮肤骨骼和约束可隐藏层级树中的非活动骨骼。

隐藏视口皮肤骨骼可隐藏视口中的非活动骨骼。取消选中此选项将使所有骨骼处于活动状态,而不考虑皮肤,因此通常应选中此选项。

可以将一个骨骼添加到一个或多个皮肤,以便该骨骼仅在其所在的皮肤处于活动状态时才处于活动状态。这使骨架可以有仅用于特定皮肤的骨骼。不活动的骨骼不会影响运行时性能。

要将骨骼添加到活动皮肤中,请选择该骨骼,然后单击层级树属性中的添加到皮肤。还可以在层级树中拖动骨骼并将其放在皮肤上。或者,选择一个皮肤并单击层级树属性中的添加到皮肤,然后单击任意数量的骨骼或约束以将其全部添加到皮肤中。

如果其他皮肤中的附件权重或约束需要该骨骼,则骨骼将自动添加到这些其他皮肤。发生这种情况时,会显示一条消息并有一个打开spine.log的按钮,其中包含有关更改的详细信息。可以使用撤消恢复更改,但这样做会导致显示警告

皮肤骨骼在层级树中骨骼的右侧有一个皮肤图标。单击它将选择其所有皮肤下的骨骼。这可以方便查找皮肤或从所有皮肤中删除骨骼。

要从皮肤中移除骨骼,请在层级树中选择皮肤下的骨骼,然后单击删除按钮(删除按钮通常位于此位置)。

皮肤骨骼在Spine Essential版中不可用。

根据层级树视图的设置,摄影表和曲线图中的皮肤骨骼行可能不可见。

皮肤约束

隐藏皮肤骨骼和约束可隐藏层级树中的非活动约束。

可以将约束添加到一个或多个皮肤,以便仅当约束所在的皮肤处于活动状态时,该约束才处于活动状态。这使骨架可以有仅用于特定皮肤的约束。非活动的约束不会影响运行时性能。

要给活动皮肤添加约束,请选择该约束,然后单击层级树属性中的添加到皮肤。还可以在层级树中拖动约束并将其放到皮肤上。或者,选择一个皮肤并单击层级树属性中的添加到皮肤,然后单击任意数量的约束或骨骼以将其全部添加到皮肤中。

皮肤约束在层级树中约束的右侧有一个皮肤图标。单击它将选择其所有皮肤下的约束。这可方便查找皮肤或从所有皮肤中删除约束。

要从皮肤中移除约束,请选择层级树中皮肤下的约束,然后单击删除按钮(删除按钮通常位于此位置)。

受约束的骨骼

受约束的骨骼是约束将修改的骨骼。当某些受约束的骨骼因为在皮肤中而处于非活动状态时,约束仍会起作用,只是不会修改不活动的骨骼。

如果所有受约束的骨骼都在皮肤中,则约束也应该在这些皮肤中,因为当所有受约束的骨骼都未处于活动状态时,约束没有任何作用。约束将显示一个警告,直到它被添加到这些皮肤中的至少一个。

皮肤约束示例

皮肤可以使用约束来移动骨骼,以便骨架及其所有动画可以重复用于不同比例的角色。有关更多信息,请参阅不同比例的皮肤约束

警告

在导出数据以用于Spine运行时之前,应修复所有警告。

当皮肤配置错误时,骨骼、附件和约束的层级树图标上会出现警告。

这可能是因为骨架的多个部分依赖于其他部分。当某些部分添加到皮肤而该皮肤不可见时,这些部分将不可用。这可能会导致骨骼变换无效、阻止渲染附件或阻止应用约束。

骨骼警告

如果骨骼与父骨骼的皮肤不同,则会在骨骼的层级树图标上显示警告。发生这种情况时,骨骼和任何附件将不会显示在视口中。

当父骨骼处于非活动状态时,子骨骼的变换无效。任何依赖子骨骼变换的内容(如使用权重的附件)也将无效。

若要修复骨骼警告,请将子骨骼添加到与其父骨骼相同的皮肤。

取消选中隐藏视口皮肤骨骼时,无论哪些皮肤可见,所有骨骼都处于活动状态。取消选中此设置时,在运行时无法正确渲染的骨骼警告可能会正确渲染。

附件警告

如果出现以下情况,附件层级树图标上将显示警告:

  • 对于有骨骼警告的骨骼,附件有权重,或
  • 附件在一个皮肤中,并且有位于皮肤中的骨骼的权重,但不在附件的皮肤中。

加权到非活动骨骼的顶点无效,并设置为世界0,0。例如,网格的无效顶点显示在世界0,0处。如果所有顶点都无效,则整个网格将位于世界0,0,并且根本看不到。

要修复附件警告,请先修复附件权重使用的骨骼的任何骨骼警告。然后,如果附件位于皮肤中,并且任何这些骨骼也位于皮肤中,则将皮肤骨骼添加到附件的皮肤中。

约束警告

如果出现以下情况,约束的层级树图标上将显示警告:

  • 约束的目标骨骼在皮肤中,但约束不在该皮肤中,或者
  • 约束的所有受约束骨骼都在皮肤中,但约束不在这些皮肤中。

当约束出现警告时,意味着它要么根本不能应用,要么只能偶尔应用,具体取决于可见的皮肤。

若要修复约束警告,请将约束添加到与目标骨骼相同的皮肤。然后,如果所有受约束的骨骼都在皮肤中,请确保约束至少在其中一个皮肤上。

复制皮肤

复制皮肤时,会显示一个有更多选项的对话框。某些选项将只对网格附件或有关键帧的附件显示。

  • 链接网格:不是为新的皮肤复制网格,而是创建链接网格
    • 继承变形:链接的网格将共享源网格的变形关键帧。
  • 复制关键帧:每个动画中各复制附件的关键帧也会被复制。
  • 重命名附件:在每个复制的附件前加上皮肤名称。例如,head,因为red/head代表red皮肤。当每个皮肤的图片被组织到子文件夹中时很有用。

皮肤工作流程

皮肤是强大的,有很多方法可以利用它们。在使用皮肤时,请记住,使用正确的工作流程可以节省大量时间。

第一个皮肤

如果所有附件都是在没有使用皮肤占位符的情况下创建的,则创建皮肤占位符并逐个移动现有附件将非常繁琐。要更有效地执行此操作,请首先使用层级树筛选器隐藏骨骼和插槽,以便只显示附件。这样就可以方便选择许多附件。接下来,创建皮肤或确保皮肤为活动状态,然后选择你的附件并选择新建... 皮肤占位符。这将为使用相同名称的每个附件创建一个皮肤占位符,并且附件将移动到活动皮肤的皮肤占位符下。

如果需要,可以使用查找和替换来修复附件名称。例如,添加皮肤名称作为子文件夹前缀,如skinName/imageName

相似皮肤

当新皮肤与现有皮肤相似时,复制现有皮肤会很有帮助,这也会复制其所有附件,然后修改新皮肤。

如果将图片或附件拖动到新皮肤的皮肤占位符,则将它们放到现有附件上会复制其变形,而将它们放到皮肤占位符上则不会。

查找和替换可用于快速重命名新皮肤中的所有附件。如果你的图片大小相同,并且使用命名约定(例如skinName/imageName),则可能只需查找和替换即可完全设置新的皮肤。

程序化皮肤

如果你发现自己用“查找和替换”创建了大量皮肤,另一种解决方案可以让你受益。如果可以使用简单的模式或命名约定派生出Spine项目,那么就没有必要在Spine项目中繁琐地创建所有内容。

如果你的皮肤仅在附件名称上有所不同,请与你的程序员一起创建运行时解决方案。一种方法是在Spine编辑器中仅创建单个皮肤。然后,在运行时,编写代码复制皮肤并根据需要更改名称。

移除皮肤占位符

如果不再需要皮肤占位符,则将附件移动到插槽并删除每个皮肤占位符将非常繁琐。相反,请选择皮肤占位符,然后单击层级树属性中的删除。在删除对话框上,选中保留当前附件。这将在删除皮肤占位符之前将活动皮肤的附件移动到插槽。任何其他皮肤中的附件都将被删除。

混合和搭配

简单的项目可以使用一个皮肤装配整个骨架。更复杂的项目可能会使用皮肤对附件进行分组,其中每个皮肤都是一个单独的项目或身体部位,然后同时显示多个皮肤以装备骨架。我们的混合和搭配示例项目就使用这种方法。

在Spine编辑器中,皮肤视图允许同时看到多个皮肤。在运行时,这是通过创建皮肤并向其添加多个皮肤来完成的。

视频

下一节: 约束 上一节: 路径附件