This document is about: FUSION 2
SWITCH TO

Network Mecanim Animator

概述

NetworkMecanimAnimator同步由相關Unity mecanim Animator元件保存的參數的狀態和值。

重要的是,由於Unity的Animator元件不能倒帶和重新模擬(它僅設計為向前運行),並且因為不能準確設定為刷新的狀態,因此不能依賴它來製作刷新準確的動畫。

由於這種「僅向前」的限制,NetworkMecanimAnimator不會嘗試重新模擬,並且NetworkMecanimAnimator只會將Animator元件從狀態授權同步到代理。輸入授權還應在向前刷新時對動畫器應用更改。

注意: 在許多情況下,使用NetworkMecanimAnimator可能不是同步動畫的理想答案。請務必參照動畫概念與模式部分以獲取更多資訊。

用途

任何控制器程式碼都應將輸入應用於狀態授權和輸入授權,而不是代理。如果您使用Fusion的輸入系統,則會自動執行此操作。

C#

void FixedUpdateNetwork()
{
  // Only apply changes to the Animator if input is available
  // (which is true for StateAuthority and InputAuthority),
  // and only on Forward ticks (resimulation should be ignored).
  if (GetInput(out var input) && Runner.IsForward)
  {
     // Apply inputs to Animator
  }
}

不使用Fusion輸入處理的共享模式

共享模式不需要使用Fusion輸入系統,您可以自己處理輸入收集和應用程式。在這種情況下,一定要將輸入限制為僅適用於狀態授權。

C#

void FixedUpdateNetwork()
{
  // In Shared Mode:
  // Only apply changes to the Animator on the StateAuthority.
  if (HasStateAuthority)
  {
     // Apply inputs to Animator
  }
}

SetTrigger()

使用穿過NetworkMecanimAnimator.SetTrigger()方法而不是Animator.SetTrigger()調用,因為觸發器是瞬態的,在NetworkMecanimAnimator捕獲Animator元件的值之前,後備布林值可能會重置為偽。NetworkMecanimAnimator.SetTrigger()還有一個passThroughOnInputAuthority選項,它會立即傳遞到輸入授權上的Animator.SetTrigger(),這是為了方便起見。

Back to top