在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