======英雄骨骼动画====== =====目录规范(美术/程序)===== 动画相关文件存放在 Asset/Resources/Prefab/HeroAnim/ 每个英雄命名一个文件夹, 比如 Hero_A_001, 最好和hero_config表格里的 Hero_L_001配对 (把L换成A) 文件夹中,存放4个文件(以及对应的meta文件),名字都和目录保持一致。分别是 |Hero_A_001.png | 切好部件的图片 | |Hero_A_001.prefab | 程序引用的预制体 | |Hero_A_001.anim | 待机动画文件 | |Hero_A_001.controller | 待机动画控制文件 | 如图所示 {{:pasted:20190428-134117.png}} {{:pasted:20190428-134138.png}} =====表格引用(策划)===== [[generated:hero_config]]新增了一个anim字段,负责引用动画文件。 如果动画文件存在,则优先动画,否则使用pic字段的大图 会出现立绘的地方,都可以被替换成动画文件。 主要有: * 战斗敌人界面 \\ * 大卡界面 \\ * 英雄升级界面 \\ =====游戏引用(程序)===== 使用这样的代码  ''UIFeatureHero.SafeSetHero(Img_HeroIcon,h_config);'' 代替原来的,''UIFeatureCommon.SafeSetIcon(Img_HeroIcon,h_config.pic);'' ====注意点==== 由于动画预制体是SpriteRenderer而不是Image 和原来会有若干不同参考后面两个章节 实现细节包含 * 1/清除原来的动画预制体 \\ * 2/尝试加载预制体,如果失败则以普通图片形式加载 \\ * 3/根据一套计算规则,使得预制体和原来的image一致,推算的公式是 100*(Image的尺寸)/(原始图片的尺寸) \\ * 4/根据一套计算规则,校准坐标中心,推算的公式是 0.5-Image.pivot.y * Image的高度\\ * 5/修改了 shader和UICMaterialCtrl 使得动画可以同时控制 动画预制体 和 图片Image的 颜色变化。其中用raw_color来控制颜色而不是直接用定点色,在动画中需要注意。参考下一节:动画注意 \\ * 6/让SpriteRenderer的sortingLayer和sortingOrder和pic一致, 这样可以保证SpriteRenderer能正确显示。但会遮挡在同层的所有东西上面,所以需要把下面的UI控件提高层级。 =====动画注意===== * 美术需要保证 预制体可以自动循环播放待机动画 * 在战斗场景中的缩放动画。只需要针对上层的pic节点制作就可以了,动画体是他的儿子,可以跟随动画 * 变色动画 分为 基础变色 和 Tint变色 。(前者是乘法,后者是叠加) {{:pasted:20190428-140944.png}} =====层级注意(所有人)===== SpriteRenderer 和 Image 在实现上有所不同。 不能靠编辑器里的上下关系来确定显示层级。但是 sortingLayer(排序层)和sortingOrder(层内顺序)是有效的 所以我们可以让 英雄立绘/动画 下面的UI控件,都提高一个层级内顺序就可以解决这个问题。 {{:pasted:20190428-141540.png}} 如果下面的控件有交互,需要添加Raycast组件 {{:pasted:20190428-141935.png}} 部分页面,不使用这样的方法,我才用了一些其他手段。 比如PanelCommonHeroDetail ,会导致上面再覆盖一个Dialog的时候,出现层级错乱。 对策是我把PanelCommonHeroDetail直接修改成 EFFECT 层 =====技术备忘===== [[https://blog.csdn.net/HuLuGuai/article/details/82797061]] 这篇文章讲了unity 老版的 切片动画和这个 animation2d新版动画的介绍。 新版会方便很多,也可以新老结合来做。 老版比较适合做刚体,也就是硬切块的动画 [[https://blogs.unity3d.com/2018/11/09/getting-started-with-unitys-2d-animation-package/]] 官网关于切块的做法视频 内部层级的做法,是设置骨骼的深度值,越大越靠前 TODO: 异步加载