• 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 }
    View Code
    测试结果:
         单次取和设置消耗约为0.5~1ms左右;
  • 相关阅读:
    Basic4android v3.20 发布
    KbmMW 4.40.00 正式版发布
    Devexpress VCL Build v2013 vol 13.2.2 发布
    KbmMW 4.40.00 测试发布
    kbmMWtable for XE5 接近尾声
    使用delphi 开发多层应用(二十一)使用XE5 RESTClient 直接访问kbmmw 数据库
    为什么有些东西,反反复复总是学不会
    心灵沟通
    <转>离婚前夜悟出的三件事
    c++ socket 客户端库 socks5 客户端 RudeSocket™ Open Source C++ Socket Library
  • 原文地址:https://www.cnblogs.com/xsln/p/Animator_Override_Controller.html
Copyright © 2020-2023  润新知