spine-unity怎么决定我的Spine模型的大小?
Spine使用 1像素:1单位。意思是,如果你只是包含图像在你的骨架中,并且没有任何旋转和缩放,在Spine中该图像的1个像素就对应1个单位高和1个单位宽。
在Unity中,1单位:1米。这是Unity默认的物理值和约束(包括2D和3D)。对于这点,使用1像素:1单位通常不是一个好主意。反而,Unity自己的精灵默认缩放为1/100;意味着100个像素就是1个Unity的单位大小。
为了方便,当你将Spine数据带入Unity的时候,可以将缩放设置为0.01用来匹配Unity的精灵。
如果你想设置骨架的基本比例的高低,你可以在Skeleton Data Asset的Inspector中改变这个值。当你的SkeletonData
被读取时这个值是一个乘数。当SkeletonData
被加载并且在运行的时候去改变这个值是没有用的。
如果你想在游戏中动态得改变骨架的视觉比例(像球这种的),你可以设置gameObject.transform.localScale
属性的值。
水平翻转 or 垂直翻转
访问Skeleton.FlipX
和Skeleton.FlipY
可以允许骨架的水平翻转和垂直翻转。 这通常是个好主意,这可以让骨架朝着一个方向,所以你可以在代码中控制翻转逻辑。如果没有,你可以随时增加一个额外的bool
变量用来控制和取消预期翻转的布尔逻辑.
你可能已经在Unity中学会怎么反转2D精灵,设置Transform的scale为负数,或者沿着Y轴旋转180度。 这两件事纯粹是视觉的目的。但是它们有其副作用,请记住:
- 不均匀的缩放会导致一个网格绕过Unity的配料系统。这意味着每个实例都会有它自己的draw calls。所以对于你的主要角色这没什么问题。如果你的不均匀缩放骨架的规模为数十个,它就是有害的。
- 旋转会导致法线随着网格旋转。对于2D精灵的光照,这意味着它们会指向错误的方位。
- 旋转X或者Y也可能会导致Unity的2D碰撞发生不可预知的结果。
- 负比例的缩放会导致附加的物理碰撞和一些脚本逻辑发生不可预料的结果。
上述是官方的说明, 我们项目目前是用ScaleX 翻转, 不过只是展示, 并没有处理其他逻辑, 应该还好。