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,它允许你扩张已经存在的动画控制器,用特定的animations 但是需要保留原始的结构、参数和逻辑;

This allows you to create multiple variants of the same basic state machine, but with each using different sets of animations.

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

For example, your game may have a variety of NPC types living in the world, but each type (goblin, ogre, elf, etc) has their own unique animations for walking, idling, sitting, etc.

例如:你有一系列的npc生活在游戏中,他们有自己的独特走、idle、坐等animations;

By creating one “base” Animator Controller containing the logic for all NPC types, you could then create an override for each type and drop in their respective animation files.

To demonstrate, here’s a typical Animator Controller asset:

创建一个基础动画控制器,包含所有种类npc的逻辑,你就可以创建一个override为每一种NPC,然后用他们各自的animation去填充;

using UnityEngine;
using System.Collections;

public class AnimatorOveridePerformance : MonoBehaviour {
    public bool m_test = true;
    Animator m_animator = null;
    AnimatorOverrideController m_Old = null;
    AnimatorOverrideController m_New = null;

    // Use this for initialization
    void Start () {
        m_animator = GetComponent<Animator>();
        m_Old = new AnimatorOverrideController();
        m_New = Resources.Load<AnimatorOverrideController>("Packages/ArtWorks/Player/M2/M2_P04/M2_P04");
        Debug.LogError(m_New);
        m_Old = (AnimatorOverrideController)m_animator.runtimeAnimatorController;
        if (null != m_New) {
            Debug.LogError(m_Old["P01Attack01"]);
            Debug.LogError(m_Old["P01Attack02"]);
            m_Old["P01Attack01"] = m_New["P04Attack01"];
            m_Old["P01Attack02"] = m_New["P04Attack02"];
            Debug.LogError(m_Old["P01Attack01"]);
            Debug.LogError(m_Old["P01Attack02"]);
        }
    }

    void Update() {
        Profiler.BeginSample("Update");
        if (m_test && m_New) {
            Profiler.BeginSample("this[]");
            m_Old["P01Attack01"] = m_New["P04Attack01"];
            m_Old["P01Attack02"] = m_New["P04Attack02"];
            Profiler.EndSample();
        }
        Profiler.EndSample();
    }

}

单次消耗大概在0.5到1ms

时间: 2024-10-19 21:33:49

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

Animator Override Controller学习及性能测试

本文由博主(YinaPan)原创,转载请注明出处: http://www.cnblogs.com/xsln/p/Animator_Override_Controller.html 一.Animator Override Controller简介: 动画覆盖器是一类asset,它允许你扩张已经存在的动画控制器,用特定的animations,但是需要保留原始的结构.参数和逻辑: 这就允许你创建同一个基础状态机的多个变种,这些变种使用不同的animations. 例如:你有一系列的npc生活在游戏中,

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

性能测试的目的,什么是性能测试? 目的主要有四点: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

httprunner学习16-locust性能测试

前言 HttpRunner 的 yaml 脚本文件,可以结合locust做性能测试 locust环境准备 安装完成 HttpRunner 后,系统中会新增locusts命令,但不会同时安装 Locust. 使用locusts -V查看时,会提示需要先安装locustio C:\Users\dell>locusts -V WARNING Locust is not installed, install first and try again. install command: pip instal

性能测试工程师的能力要求以及学习路线

很多学员都会问:1.如何才能成为NB的性能测试工程师?2.成为性能测试工程师都学习什么啊?3.loadrunner我需要学习到什么程度啊?............ 如何才能找到答案呢,我们根据岗位要求去完善和构建整个性能测试工程师的能力要求体系. 首先:分析性能测试工程师的岗位要求其次:根据岗位要求分析出能力要求然后:根据能力要求分析出知识要求最后:根据知识要求梳理学习体系 根据思路我收集整理了现有的市面上招聘所有的性能测试工程师的岗位需求(招聘网站)所有的性能测试工程师的岗位要求,根据这些岗位

学习笔记---使用override注解

在学习或者做东西,都懒得动手记,得习惯记下来才好... 最近在看<Effective Java>,确实对我有很大的提高,把自己看到和想到的东西写下来,标记... 1. 坚持使用override注解. 1 public class Bigram { 2 3 private final char first; 4 private final char second; 5 public Bigram(char first,char second) { 6 this.first = first; 7

Unity3D之Mecanim动画系统学习笔记(五):Animator Controller

简介 Animator Controller在Unity中是作为一种单独的配置文件存在的文件类型,其后缀为controller,Animator Controller包含了以下几种功能: 可以对多个动画进行整合: 使用状态机来实现动画的播放和切换: 可以实现动画融合和分层播放: 可以通过脚本来对动画播放进行深度控制: 下面我们通过一个图来直观的看看动画的组成结构: Animator组件用来控制人物动画的播放,其中需要的两个最核心的内容就是控制动画播放逻辑的Animator Controller以

unity 对Animator动画系统的研究

unity的新动画系统叫Mecanim,使用Animator来取代旧系统Animation,按Unity文档的惯例:知识点主要分2部分:unity manual和unity script,读者可以边看文章边查阅文档,最好能动手测试. 文章的开始之前,先讲几个基本的知识的: 1.创建动画的一个基本步骤是设置一个unity3d可理解的简化后的骨骼到骨架中实际骨骼的映射:在Mecanim的术语中,这个映射称为Avatar,即avatar是骨骼到骨架的映射. (图片来自网) Avatar主要用于类人骨骼