当前位置: 首页 > news >正文

AnimatorOverrideController说明

unity-AnimatorOverrideControllericon-default.png?t=N2N8https://docs.unity.cn/cn/current/ScriptReference/AnimatorOverrideController.html

用于控制动画器重写控制器的接口。

动画器重写控制器的用途是重写某个控制器的动画剪辑,从而为给定化身定制动画。 在运行时基于相同的 AnimatorController 交换 Animator.runtimeAnimatorController 和 AnimatorOverrideController 不会重置状态机的当前状态。

在游戏开发时使用可以优化游戏性能

[Unity 活动]-Unity X 永劫无间「Unity大咖作客」线上分享会 — 动作动画专场【回放】_哔哩哔哩_bilibili

川哥曾在分享里过,在override这些时间里Unity会尝试把AnimatorController里所有的State合并到一个名为 Animationset 的数据结构中。这意味着所有的AnimationClip再乘上所有Clip里所用的曲线都要经过一系列的运算。因此我们的State和AnimationClip越多越复杂,这个运算的耗时也会增加,导致性能问题。

所以在原模板,就是被我们override的对象里面的AnimationClip越空越好,最好都是创建空对象然后再被override修改,因为迟早都是要被修改的,因此有东西没啥意义,除了耗性能没啥实际意义。

在写资料过程中发现了一篇大佬的文章:

Unity中Animator Override的性能问题 - 知乎 (zhihu.com)

在这个中因此要尽可能的减少动画机的复杂度,可以不断控制换AnimationClip,自己决定什么时候用,什么时候加载,并在这个过程中尽可能少的override,优化性能

如何简单使用代码如下:

PlayerAnimator:动画控制器

  RuntimeAnimatorController rac;void Start(){//加载动画控制器rac = Resources.Load<RuntimeAnimatorController>("PlayerAnimator");//设置默认动画控制器GetComponent<Animator>().runtimeAnimatorController = rac;//根据路径加载动画AnimationClip clip = Resources.Load<AnimationClip>("attack01");//重写控制器AnimatorOverrideController aoc = new AnimatorOverrideController();//设置为默认控制器aoc.runtimeAnimatorController = rac;//把默认动画改为加载的动画aoc["attack00"] = clip;//清空GetComponent<Animator>().runtimeAnimatorController = null;//赋值GetComponent<Animator>().runtimeAnimatorController = aoc;//播放指定动画GetComponent<Animator>().Play("attack00");}

这个播放GetComponent<Animator>().Play("attack00");,里面的名称还是原来控制器的名称,但是此时里面的的动画已经被修改了

注:关于这里有些版本api可能有所不同

http://www.lryc.cn/news/43042.html

相关文章:

  • 1.4、第三阶段 MySQL数据库
  • LeetCode:202. 快乐数
  • Android 14 新功能之 HighLights:快速实现文本高亮~
  • [渗透教程]-004-嗅探工具-Nmap
  • 大数据技术之Hive SQL题库-初级
  • 常见HTTP状态码汇总
  • 蓝桥杯刷题冲刺 | 倒计时15天
  • 【差分数组】
  • 2022年NOC软件创意编程(学而思)决赛小学高年级组scratch
  • [JAVA]一步接一步的一起开发-图书管理系统(非常仔细,你一定能看懂)[1W字+]
  • 大数据周会-本周学习内容总结07
  • 搭建一个双系统个人服务器
  • 电脑长按电源键强行关机,对SSD有伤害吗?SSD 掉盘之殇
  • Linux:centos内核优化详解
  • 链表经典OJ题合集(包含带环问题,相交问题,随机指针复制等,附动画讲解)
  • CSS新增
  • 奇安信_防火墙部署_透明桥模式
  • C语言——字符串函数(2)和内存函数
  • 第1节 线性回归模型
  • CodeGeeX 130亿参数大模型的调优笔记:比FasterTransformer更快的解决方案
  • Linux驱动之并发与竞争
  • 【密码学复习】第四讲分组密码(三)
  • JVM(内存划分,类加载,垃圾回收)
  • 工作中遇到的问题 -- 你见过哪些写的特别好的代码
  • 基于chatGPT设计卷积神经网络
  • java.sql.Date和java.util.Date的区别
  • 动态规划---线性dp和区间dp
  • 常见的2D与3D碰撞检测算法
  • STM32 10个工程篇:1.IAP远程升级(二)
  • Unity+ChatGpt的联动 AICommand