Animator Override Controller学习及性能测试

本文由博主(YinaPan)原创,转载请注明出处: http://www.cnblogs.com/xsln/p/Animator_Override_Controller.html

一、Animator Override Controller简介:

  动画覆盖器是一类asset,它允许你扩张已经存在的动画控制器,用特定的animations,但是需要保留原始的结构、参数和逻辑;

这就允许你创建同一个基础状态机的多个变种,这些变种使用不同的animations。

  例如:你有一系列的npc生活在游戏中,他们有自己的独特走、idle、坐等animations,创建一个基础动画控制器,包含所有种类npc的逻辑,

你就可以创建一个override为每一种NPC,然后用他们各自的animation去填充;

二、制作方法:

图标:带+号为Override Controller

1、Create选择Animator Override Controller

2、修改名字为M2_P01

3、将原来的AnimtorController拖到Controller内,即制作完成!

三、使用及this[]的性能测试

 1 using UnityEngine;
 2 using System.Collections;
 3
 4 public class AnimatorOveridePerformance : MonoBehaviour {
 5     public bool m_test = true;
 6     Animator m_animator = null;
 7     AnimatorOverrideController m_Old = null;
 8     AnimatorOverrideController m_New = null;
 9
10     // Use this for initialization
11     void Start () {
12         m_animator = GetComponent<Animator>();
13         m_Old = new AnimatorOverrideController();
14         m_New = Resources.Load<AnimatorOverrideController>("Packages/ArtWorks/Player/M2/M2_P04/M2_P04");
15         Debug.LogError(m_New);
16         m_Old = (AnimatorOverrideController)m_animator.runtimeAnimatorController;
17         if (null != m_New) {
18             Debug.LogError(m_Old["P01Attack01"]);
19             Debug.LogError(m_Old["P01Attack02"]);
20             m_Old["P01Attack01"] = m_New["P04Attack01"];
21             m_Old["P01Attack02"] = m_New["P04Attack02"];
22             Debug.LogError(m_Old["P01Attack01"]);
23             Debug.LogError(m_Old["P01Attack02"]);
24         }
25     }
26
27     void Update() {
28         Profiler.BeginSample("Update");
29         if (m_test && m_New) {
30             Profiler.BeginSample("this[]");
31             m_Old["P01Attack01"] = m_New["P04Attack01"];
32             m_Old["P01Attack02"] = m_New["P04Attack02"];
33             Profiler.EndSample();
34         }
35         Profiler.EndSample();
36     }
37
38 }

测试结果:

单次取和设置消耗约为0.5~1ms左右;

时间: 2024-08-08 01:28:46

Animator Override Controller学习及性能测试的相关文章

Animator Override Controllers 学习及性能测试

The Animator Override Controller is a type of asset which allows you to extend an existing Animator Controller, replacing the specific animations used but otherwise retaining the original's structure, parameters and logic. 动画覆盖器是一类asset,它允许你扩张已经存在的动画

学习笔记-性能测试-概述

性能测试的目的,什么是性能测试? 目的主要有四点:1评估系统能力,2寻找系统弱点(瓶颈),3系统调优,4验证系统可靠性,稳定性. 通俗的来说,性能测试的目的就是验证系统好不好用,就像功能测试验证系统是否可以用. 比较官方点的定义是: 是指在某个特定的硬件.软件.网络环境下通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各项性能指标进行测试. 性能测试的步骤? 设计测试方案 选择测试工具 搭建测试环境 设计测试场景 执行测试 分析测试结果 性能选择的标准? 达到客户的需求 新系统至

学习笔记-性能测试-工具篇-LR-初识

关于LR的基本信息网上都能搜到,这里就不再赘述. loadrunner的安装准备 windows环境: 前提条件: 内存:2G,硬盘空闲空间10G,安装完成后实际只占不到2G 支持winXP  SP3;32位与64位win7浏览器支持IE6-8,IE9,firefox3 若以前安装过LoadRunner,则将其卸载. 下载好需要的部件然后通过安装程序进行安装 关于破解细节,详情请百度或者谷歌. 这里找到一篇关于LR11的安装篇: http://www.cnblogs.com/yangxia-te

学习笔记-性能测试-工具篇-LR-12的安装

进入LR的官方网站下载好最新的两个版本 两个安装文件: 先解压到同一文件夹 点击安装程序,选择安装的路径会自动安装: 安装完成后出现三个主要组件: 学习笔记-性能测试-工具篇-LR-12的安装,布布扣,bubuko.com

Animator Controller学习笔记

1.Animator Controller(Animator Controller在Unity中是作为一种单独的配置文件存在的文件类型,其后缀为controller)的功能: 可以对多个动画进行整合: 使用状态机来实现动画的播放和切换: 可以实现动画融合和分层播放: 可以通过脚本来对动画播放进行深度控制. 2.Animator组件: Controller:使用的Animator Controller文件. Avatar:使用的骨骼文件. Apply Root Motion:绑定该组件的GameO

asp.net Controller学习二

4.Controller默认激活 Controller对象的激活最终是通过注册的ControllerFactory完成的,当我们没有显示调用ControllerBuilder的SetControllerFactory方法指定ControllerFactory对象时,Controller激活系统会使用一个DefaultControllerFactory对象来激活目标Controller,这就是ASP.NET MVC采用的默认Controller激活机制. 目标Controller对象被激活的前提是

ASP.NET MVC之Controller学习2

  实现自己的Controller 平常定义的Controller都继承自Controller类,Controller类又继承ControllerBase,其最后又实现了IController接口 public interface IController { void Execute(RequestContext requestContext); } 实现自己的Controller 在Controller文件夹中新建一个类,取名为MineController,让后实现IController接口

jmeter ForEach Controller学习

ForEach Controller: foreach一般和用户定义变量一起使用,在用户定义变量中定义3个变量 foreach中输出变量名称(vname),这种方式可以生成一个vname的变量,点击运行 运行后vname的值分别为tom,jerry,dog      (测试在foreach中生成的变量是否可以使用)再添加一个采样器(http request),点击运行,如下:

jmeter Transaction Controller学习

测试计划组成:一个计时器(2秒),一个事物控制器,两个http request 在Transaction Controller中不勾选第2个选项就相当于lr中的忽略思考时间 没有勾选第2项的执行结果: 勾选了第2项的执行结果: