Spine变色动画在unity中失效的问题

7 篇文章 0 订阅

   最近美术同事做spine变色动画的时候打开了Tint Black选项来做图片颜色过渡变化的效果。但是到了程序这边在unity中显示的是灰度,没有颜色变化。

  在unit中有问题的spine动画材质图片如下:

解决之后正确的spine动画材质图片如下:

说白了就是改变spine材质的shader。默认情况下拖入到unity中是Spine/Skeleton。如果spine动画中开启了Tint Black做颜色渐变动画,我们可以通过修改spine动画的材质shader来正确显示美术那边做的动画效果。这种情况分两类。

1.一个单色渐变的spine动画(开启了Tint Black)。在unity中把该spine动画的材质shader修改为Spine/Skeleton Tint。

2.一个多色变化的spine动画(开启了Tint Black)。在unity中把该spine动画的材质shader修改为Spine/Skeleton Tint Black。

如果改过之后材质颜色变了,但是和美术那边有出入的话,可能是你初始颜色没有设置好(这个是针对单色渐变)。就是你用的渐变图片不是你动画第一帧的初始颜色。那么你就需要把你的初始颜色的赋给材质下面的Black Point属性就可以了,如图:

颜色改完之后,spine动画显示的效果就是美术那边设计的效果了。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Unity循环播放Spine动画的代码可以参考下面的示例代码: ``` using System.Collections; using System.Collections.Generic; using UnityEngine; using Spine.Unity; public class SpineAnimationController : MonoBehaviour { // Spine动画组件 public SkeletonAnimation skeletonAnimation; // Spine动画名称 public string animationName; // 是否循环播放 public bool loop = true; // Start is called before the first frame update void Start() { // 播放Spine动画 skeletonAnimation.AnimationState.SetAnimation(0, animationName, loop); } // Update is called once per frame void Update() { // 如果Spine动画播放结束,则重新播放 if (skeletonAnimation.AnimationState.GetCurrent(0).IsComplete) { skeletonAnimation.AnimationState.SetAnimation(0, animationName, loop); } } } ``` 在上面的示例代码,我们首先定义了一个SkeletonAnimation类型的变量skeletonAnimation,它是Spine动画组件,用于播放Spine动画。我们还定义了一个字符串类型的变量animationName,它是Spine动画的名称。我们还定义了一个布尔类型的变量loop,用于指定是否循环播放Spine动画。 在Start函数,我们调用了skeletonAnimation.AnimationState.SetAnimation函数来播放Spine动画。其,第一个参数0表示Spine动画的TrackIndex,第二个参数animationName表示要播放的Spine动画的名称,第三个参数loop表示是否循环播放Spine动画。 在Update函数,我们检查当前播放的Spine动画是否已经播放完毕,如果已经播放完毕,则重新播放Spine动画
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值