Spine在游戏中的使用

Spine在我们游戏项目中的应用
第一次写博客,实属不知道从何下手,就简单介绍一下目前我们游戏(一款已上线的女性向游戏)中Spine的应用吧

一、在游戏中显示Spine
我们是将Spine在UI和场景中的显示分开处理的
1.Spine在UI中的显示
在生成的Spine预制物添加SkeletonGraphic组件,该类提供了如播放动画,播放速度,朝向等接口;
添加SpineActionEventHandler组件,该类主要是对动画播放的事件监听,处理。
2.Spine在场景中的显示
在生成的Spine预制物添加SkeletonAnimation组件,该类提供了如播放动画,播放速度,朝向等接口;
添加SpineActionEventHandler组件,该类提供了监听动画事件帧的处理;
添加刚体Rigidbody和碰撞体BoxCollider

二、遇到的问题
在Spine动画中如果检测到当前帧与下一帧的三角网格发生了变化或者下一帧的子网格material引用发生了变化,会强制更新Material,会导致修改Meshrenderer.material失效,猜测是因为外部修改了MeshRenderer.materials会生成新的material实例,导致SkeletonRenderer管理的Material与实际网格所引用的Material不一样。
关于这个问题,我们的解决方案是在OnWillRenderObject重新赋值sharematerials,每次更改material之后,都会在下一次渲染之前将修改的值赋值给sharematerials。
官方的方案是用MaterialPropertyBlock来修改材质数据,可参考https://blog.csdn.net/qq_14838361/article/details/78655881,一般情况下推荐使用mpb进行设置,效率更高,不会产生新的材质实例,并且相同材质时使用属性相同的mpb可以进行合批

三、性能问题
主要的性能消耗在Skeleton.UpdateWorldTransform()这个函数里面,该函数更新Spine的全部骨架数据,因此,骨架越多,性能消耗越大
我们的优化方案是,尽量减少骨架,降低该函数在Update中的调用频率 ,例如if(Time.frameCount % 2 != 0 ) return;
官方的建议是
1 if(Time.frameCount % 2 != 0 ) return 减少Update帧率
2 降低骨架复杂度
3 每帧只更新一部分骨架
4 仅让少数骨架实现动画效果,减少需要更新的骨架
5 尽量不注册UpdateWorld事件(会再调用一次Skeleton.UpdateWorldTransform())

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 微信小程序是一个具有高度可扩展性和交互性的平台,可以支持各种类型的应用。其Spine作为一种专业的2D动画引擎,可以广泛应用于游戏开发等领域。在微信小程序使用Spine,可以为开发者提供更好的动画效果和用户体验。 使用Spine在微信小程序创建动画需要进行以下步骤: 1.将Spine动画导出为JSON格式,并将JSON文件上传到微信小程序的资源库。 2.在微信小程序加载这个JSON文件。 3.通过代码来对这个动画进行控制、播放以及其它相应的操作。 参考Spine提供的API,开发者可以轻松地实现Spine动画在微信小程序使用。例如,可以使用如下代码来加载一个Spine动画: let spine = wx.createAnimation({ duration: 1000, timingFunction: 'linear' }) spine.addSpriteFrame('resource/animation/spine.json') 然后,可以使用如下代码来对这个动画进行控制: let spineAnimation = spine.getSpineAnimation() // 播放Spine动画 spineAnimation.play() // 暂停Spine动画 spineAnimation.pause() // 设置Spine动画循环播放 spineAnimation.setLoop(true) // 设置Spine动画位置 spineAnimation.setPosition(0, 0) 通过以上步骤,开发者可以很容易地在微信小程序使用Spine动画,并为用户带来更好的视觉效果和动画体验。 ### 回答2: 微信小程序现在支持使用Spine技术制作动画。Spine是一种基于骨骼动画的技术,它可以让开发者更快速、灵活地创建动画效果。如果你想在小程序使用Spine技术,你需要按照以下步骤进行: 1. 下载并安装Spine编辑器 在Spine网站下载并安装Spine编辑器,这是创建和编辑Spine动画的必要工具。 2. 导出Spine动画文件 将Spine编辑器的动画保存为.json文件。小程序支持使用Spine版本为3.5。 3. 导入小程序项目 将Spine动画文件导入到小程序项目,并在需要使用的页面引入文件。 4. 创建Spine对象 在页面创建一个Spine对象,并设置动画相关的属性,如文件路径、动画名称、循环模式等。可以通过Spine对象的方法控制动画的播放和暂停。 5. 显示Spine动画 将Spine对象添加到页面,并设置动画的位置和大小。则可以在小程序展示Spine动画。 在Spine动画,骨骼、图片和动画效果是分离的。这意味着通过更改骨骼的位置和旋转,可以轻松地创建复杂的动画效果。使用Spine技术,在小程序展示富有表现力的动画将变得更加容易和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值