unity 骨骼3D 手游骨骼动画有无什么神奇的压缩方式

课程名称读取中
支付宝支付
由百度云提供技术支持
&学院APP&&
扫描微信二维码精彩活动、课程更新抢先知
下载客户端,离线视频任您学
1.&课程介绍
2.&Spine文件
3.&游戏架构
4.&文本文件加密
5.&UI面板容器
7.&数据管理
8.&游戏数据预加载
9.&Asset文件管理
10.&UI视图封装
11.&英雄ICON加载
12.&战斗血量飘字
13.&血条显示
14.&UI管理
15.&战斗群组
16.&战斗技能
17.&主动技能
18.&攻击接口
19.&特效管理
20.&作战单位一
21.&作战单位二
22.&作战数值计算一
23.&作战数值计算二
24.&作战数值计算三
25.&作战数值计算四
26.&作战数值计算五
27.&事件封装
28.&场景管理
29.&云层管理
30.&战斗能量
31.&英雄战斗组
32.&怪物战斗组
33.&战斗管理
34.&副本管理
35.&英雄战斗
36.&怪物战斗
37.&单个英雄攻击
38.&单个怪物攻击
39.&Button响应事件
40.&战斗界面
41.&结算界面
42.&Combo连击
43.&炸弹和自由落体
44.&空袭乌鸦
45.&空袭管理
46.&拖拽效果
47.&拖拽数据记录
48.&绝技技能
49.&序列帧动画
50.&子弹运动算法
51.&抛物线算法
52.&随机没有重复数字算法
53.&设置渲染顺序
54.&加载进度条
55.&Buff系统
加入购物车
【课程类型】实战教学
【难度级别】高级
【适合人群】中高级研发工程师
【课程介绍】 本课程是基于Spine骨骼动画实现的动作类手游,手游功能包括文本文件加密,技能系统,战斗系统,buff系统等,是一个功能齐全的游戏。
【课程目标】 通过本课程学习,可以有助于使用Spine骨骼动画开发2D游戏,对于游戏开发着来说对于自己技能的提升有非常大的帮助。
【课程计划】 本课程共分为56个课时,由浅入深的讲解
全部评价(0)
18课程236984学员
参考知识库
为您推荐课程
讲师:姜雪伟 24课时
讲师:姜雪伟 30课时
讲师:姜雪伟 3课时
讲师:姜雪伟 21课时
讲师:姜雪伟 15课时努力加载中,稍等...
暂无新消息
努力加载中,稍等...
已无更多消息...
这些人最近关注了你
努力加载中,稍等...
已无更多消息
努力加载中,稍等...
已无更多消息
Unity3D 手游骨骼动画有无什么神奇的压缩方式?
悬赏分数(0)
请勿发表无意义的内容请勿发表重复内容请勿发表交易类内容禁止发表广告宣传贴请使用文明用语其它
淫秽色情政治倾向人身攻击抄袭剽窃广告刷屏恶意挖坟冒充他人其它
一、遵守《GAD用户评论规范》以及《GAD网站用户协议》;
二、认真对待所发布的内容:GAD社区有行业新人也有有经验的从业者,大家在这里分享互助,请尊重自己发布的内容;
三、大家能在GAD这里学习到相关知识,也可以在这里发起相关讨论。每个人都会有自己对游戏独特的理解,要尊重这些独特。"只有我才是正确的,别人都是2B" 这种态度在全世界都不受欢迎,这里也不例外;
四、请自觉遵守《全国人大常委会关于维护互联网安全的决定》、《互联网信息服务管理办法》、《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
我是阿赵,请多多指教!
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
/cn/index.html#.WArsoHEYzRI上面有视频介绍龙骨的编辑器使用和游戏中的效果&如果以前用过龙骨的朋友估计对这只小龙会挺有印象的。&这是龙骨的动画编辑器。不过这次我不打算去研究龙骨编辑器的用法,只针对龙骨在unity里面的使用情况进行一些尝试。&以下是我在试用之后的一些体会:一、龙骨在Unity内的表现 龙骨的demo里面带有多个范例,包括了动画播放、换装、控制等等,个人感觉表现力挺不错的,有兴趣可以自己下载来运行看看。换装和控制的demo&&同屏多角色的demo二、对龙骨的资源的一些解释:从龙骨里面导出的文件,会有三个,分别是骨骼配置(skeleton.txt)、图集配置(texture.txt)和图集图片(texture.png)这些文件的格式并不是针对unity的,而是通用的,配置文件是json,然后图片是png。这就是跨平台的用法,在不同的平台可以用通用的动画数据。看看详细的数据结构:这是skeleton.txt里面的内容:包括了版本号、骨骼名称、角色骨骼支架(armature)信息和帧率&接下来详细看看armature的信息:一个armature其实就是一个独立的角色了。这里看到这种结构的原因,说明了龙骨里面,一个skeleton.txt骨骼里面可以包含多个不同的角色,他们是用同一张图集的。&一个armature里面会包含蒙皮信息(skin)、动画信息(animation)和骨骼信息(bone)蒙皮信息&动画信息&骨骼信息
骨骼动画的原理我之前也有介绍过,对于骨骼动画有了解的朋友应该都知道这三个数据是做什么用的。骨骼是一个角色骨架在初始蒙皮状态时候的骨骼位置,蒙皮信息是网格模型皮肤在蒙皮状态时候相对骨骼的位置,还有受到骨骼影响的权重大小。动画信息是每一个关键帧里面骨骼对应的矩阵变化,简单来说就是位移旋转缩放之类的信息。当需要播放骨骼动画的时候,会根据动画信息算出每根骨骼当前帧应该在的位置,然后网格模型皮肤根据蒙皮信息得出网格模型当前帧需要的位移旋转缩放或者形变的情况,然后渲染出来。&接下来是图集图片的配置数据:里面包括了图片对应角色的名称、图片的路径,还有图集里面每一张小图的位置信息:图集配置数据&小图片数据 图集的原理就更简单了,根据小图在大图里面的开始位置和长宽,生成出小sprite。由于这些sprite都是从同一个texture里面生成出来的,那么他们的drawcall就只有一个了。&三、龙骨在unity里面的用法的介绍:下面从代码层级介绍一下龙骨在unity里面的用法。1、加载资源 在使用龙骨播放角色动画之前,需要先把上一个部分说道的骨骼和图集的信息先加载进来。使用的api是 1.加载骨骼信息: UnityFactory.factory.LoadDragonBonesData(骨骼文件(skeleton.txt)在resources里面的相对路径,角色名称) 2.加载图集信息: UnityFactory.factory.LoadTextureAtlasData(图集配置文件(texture.txt)在resources里面的相对路径,角色名称) 加载角色里面有一个角色名称的参数,这个参数是可以不传进去的,因为骨骼和图集里面本身是有角色名称的,如果参数不传,就会以配置里面的角色名称来使用。这个名称是很有用的,如果你指定了角色名称,那么骨骼和图集的角色名称必须要一样。因为他们加载完之后是会存在factory里面的,根据角色名称来找到对应的关系。如果两者名字不一样,就找不到对应关系了。 角色名称还有另外一个用途,就是用于资源卸载的。之后会说。2、创建角色 在确保骨骼动画和图集数据都加载了之后,我们可以创建一个角色 UnityFactory.factory.BuildArmatureComponent(armature的名称) 刚才也说过了,骨骼信息加载完是存在factory里面的,一个骨骼里面包含了多个armature,你就可以通过api把你想要的armature加载出来。这样创建的角色对象,是UnityArmatureComponent对象。就像一般的UnityComponent一样可以直接操作的一些属性,比如transform.localPosition等3、播放动画 获得了UnityArmatureComponent对象之后,就可以直接播放它身上的动画了,用到的API就是 UnityArmatureComponent.animation.Play("动画名称");4、换装 龙骨换装使用的是插槽的方式,先通过UnityFactory.factory.BuildArmature(weaponName)方法生成新的武器的Armature,然后通过 armature.GetSlot("骨骼名称").childArmature = 新武器的Armature5、资源卸载 骨骼数据的卸载:UnityFactory.factory.RemoveDragonBonesData(角色名称,是否回收到池) 图集数据的卸载:UnityFactory.factory.RemoveTextureAtlasData(角色名称,是否回收到池) 看到了刚才指定的角色名称的用途了,在卸载的时候是需要用到的。然后后面有个参数是是否回收。龙骨对于这些数据是做了对象池的,默认是否回收到池是true。不过这个功能有bug。下面会说到。四、使用龙骨的unity程序发布在手机上面的性能分析: 一开始也说到过,现在在Unity3D上面做2D骨骼的插件其实非常多,究竟哪些类型的插件会吸引我去用,主要是有那么几点的: 1、动画编辑的便捷性,也就是说是否有提供友好的编辑工具来很愉快的编辑动画 2、动画的通用性,也即是跨平台性。比如一个项目如果成功了,你会考虑移植到其他平台,比如你会想在开发了一个网页版的游戏成功了之后,把它移植到手机上,那么同样的一套美术资源,你想希望他可以直接用在unity、cocos或者html5上面。 3、运行的效率。刚才说得天花乱坠,骨骼动画的好处非常多,但如果运行效率低下,那么就什么都不必说了。 前两点,龙骨是做得非常好的。那么看看第三点效率的问题。 我把龙骨自带的多人同屏的demo修改了一下,发布成apk,分别在2台手机上面测试了一下单纯骨骼动画的效率,情况如下: 使用的就是上面截图的那个骨骼数据的角色"centaur/charactor",它有18个骨骼。 三星note3 :稳定维持60帧:同屏50个 角色
稳定维持30帧:同屏150个 角色 &红米note1:稳定维持 60帧:同屏45个角色
稳定维持30帧:同屏100个角色 由于龙骨是做2d游戏的,而2d游戏的一般帧率是不会超过30帧的,所以也就是说一般同屏角色数可以达到100个左右。但实际同屏支持数会受到多个方面的影响,比如机器的性能,或者角色骨骼数量的多少。18根骨骼对于2d游戏角色来说算是中等偏上的一个数量吧,除非需要做很写实很多细节的角色,不然一般很少用到30多根骨骼。 以前我自己写的骨骼动画框架,是用在as3上面的,如果单纯正常的播放骨骼动画,没有能达得到这样的同屏数量。但后来我是想了个办法,在加载的时候先把动画的每帧都渲染出来,然后直接播放序列帧。那样做,加载的文件还是很小,并可以做到同屏几百人,但缺点是需要的内存会增大很多,而且不能随意的换装。龙骨在兼顾多种功能的情况下能达到这种效率,我感觉算是不错。不过有空还是要拿其他几个骨骼动画插件做横向对比才能得出准确的结果。五、存在的一些问题: 在试用的过程中,我发现了挺多问题的,估计是因为第一版的关系吧。我这里大概说一下:1、获取骨骼数据和图集数据时候,没有做dictionary是否为空或者是否包含该key的判断,导致如果传入的名字有误会报错2、资源加载方面用了assets路径下面的相对路径,这样会导致发布的时候可能会有问题。而且固定加载resources下面的路径也不是一个好的选择,那样做对于项目资源配置时会觉得不灵活。最好的做法是加载这一步只封装一个纯粹一点的接口,只把加载到的字符串传入,然后生成龙骨数据,至于是怎样加载路径的,可以留给用户自己去决定。3、选择RemoveDragonBonesData回到池里面,由于调用了BaseObject的ReturnToPool方法,里面有_onClear方法是把ArmatureData的_defaultSkin置为了null,却没有把skins设置clear,,再次加载该资源时,在ArmatureData类里面的AddSkin方法,由于skins已经包含了该key,导致设置不了_defaultSkin,而在创建Armature的时候由于_defaultSkin,为空,会报错,不过就算skins设置clear了,还是有其他数据其他的数据没有清空,导致动画错乱,这个暂时没去细看4、批量角色的创建和消耗都会比较耗时,不过这种问题可以通过游戏逻辑里面分帧处理或者在有loading条的时候再批量删除来解决5、估计是龙骨开发人员对Unity的熟悉程度还不算高,在编写的过程中选用api方法有点随意,把一些UnityEditor的方法用上了,导致在发布的时候会出现一些问题。不过这个问题很快就修复了。六、总结 龙骨作为老牌的2d骨骼动画解决方案,在编辑器、跨平台和功能上应该是有一定的保证的,现在刚推出的Unity的支持,其实不算完善,很多方面都有待优化。如果有兴趣的朋友可以留意一下他们的网站更新。龙骨的unity库地址:/DragonBones/DragonBonesCSharp
阅读(964)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'在Unity3D引擎里使用DragonBone(龙骨)2D骨骼动画',
blogAbstract:'\t之前阿赵我在博客上面介绍过在unity3d里面使用Spine骨骼动画。实际上现在Unity上面开发2D游戏的人非常多,所以2D动画非常受到用户关注。现在Unity3D上面做2D骨骼动画的插件也挺多的。最近,老牌2D骨骼动画解决方案DragonBone(龙骨)也推出支持Unity3D的库,意味着我们也可以在Unity3D里面使用龙骨了。龙骨的优点是有强大的动画编辑器,和可以跨多个平台使用。龙骨的unity支持插件是最近才推出的,阿赵尝了个鲜,下载来用了一下,并做了一些分析。\t如果不了解龙骨的朋友,可以去他们的官网看看:/cn/index.html#.WArsoHEYzRI',
blogTag:'dragonbone,龙骨,unity,骨骼动画',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:7,
publishTime:2,
permalink:'blog/static/',
commentCount:0,
mainCommentCount:0,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'我是阿赵,请多多指教!',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}}

我要回帖

更多关于 unity 骨骼绑定 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信