將Animator包裝起來避免使用String輸入錯誤

在Unity中,使用Animator時,有時候會打錯字,造成找不到動畫,因此可以使用一個包裝類,將其包裝起來。

首先建立一個抽象類,AnimatorWrapper,在其中加入Animator依賴。

1
2
3
4
5
6
7
8
9
namespace Test
{
public abstract class AnimatorWrapper
{
protected Animator _animator;
public Animator Animator => _animator;
public AnimatorWrapper(Animator animator) => _animator = animator;
}
}

接著再需要播放動畫的物件實作對應的AnimatorWrapper類,將string參數放到這邊。

1
2
3
4
5
6
7
8
9
namespace Test
{
public class DoorAnimatorWrapper : AnimatorWrapper
{
public DoorAnimatorWrapper(Animator animator) : base(animator) { }
public void IsOpen(bool isOpen) => _animator.SetBool("Open", isOpen);
}
}

在使用時,透過AnimatorWrapper類曝露出來的IsOpen去操作animator。

1
2
3
4
5
6
7
8
9
private DoorAnimatorWrapper _animatorWrapper;
private void Awake()
{
var animator = GetComponent<Animator>();
_animatorWrapper = new DoorAnimatorWrapper(animator);
}

private void OpenDoor(bool isOpen)
=> _animatorWrapper.IsOpen(isOpen);

透過這種方式它能夠幫助減少因為打錯字符串而導致的錯誤,並提供了一個更加直觀、安全的介面來操作 Animator。

參考:Typos with string animation parameters

評論