LWF动画设计与实现

发表于2017-03-15
评论0 3.1k浏览

LWF动画设计与实现

现有的动画解决方案

Spine

网站
特性:

·                     独立编辑器:

·                     IK:

·                     Mesh:

·                     Unity Runtime:
官方
支持mecanim

Puppet2D

网址

特性:

·                     内置编辑器:

·                     IK:

·                     Mesh:

·                     Mecanim:

演示

LWF

网站
Presentation

特性:

·                     Flash内编辑:
无学习成本,外包容易找

·                     层级动画:
位置
缩放
旋转
剪切

·                     Color Effect:

·                     运行库:
Mecanim支持
支持UI渲染


Util

Ruby脚本 + Flash扩展 + TexturePacker Python自定义脚本

Tools/lwf/

Flash扩展完成图片的导出(swf内的图片是PreMultAlpha)
Ruby
脚本解析swf,产生二进制数据
TexturePacker
拼图
Python
整合,自动化

Runtime

Core

基础数据结构
二进制加载解析
动画运行库

·                     Text

·                     Bitmap

·                     Movie
层级关系,TransformColor

Renderer

·                     CombinedMesh
自动BatchMesh

·                     UIVertex
uGui
整合

·                     DrawMesh
编辑器模式

Wrapper

·                     LWFObject:
自带的,简单的包装

·                     LWFSprite:
自定义,完成我们需要的功能,并进行性能优化

性能优化

Cache!!!

ResourceCache:
引用计数

·                     LWFData

·                     Texture

·                     Material

·                     Mesh

·                     Shader

·                     RenderedMesh

·                     RenderedVertex

FrameCache

·                     BaseFrameCache

·                     CombinedMeshFrameCache

·                     UIVertexFrameCache

避免CPU运算

Batch!!!

默认,纹理一样就使用同一个Material

参数说明

ForceFitHeight: 高度映射到1个单位,在UI模式下应该关掉
Use Mask: 支持uGuiStencil Mask,使UI特效可以放在ListView等内
RendererType:CombinedMesh OR UIVertex
Sorting Layer: 渲染层级

Texture分层,以防止交叉导致的自动Batch失效问题

辅助类

EffectUtil

提供了创建LWF特效的简单接口,不需要自己挂载MonoBehavior
提供了Pool

SVG

扩展

性能问题,三角形数量

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引