using UnityEngine; [RequireComponent(typeof(Animator))] public sealed class AnimatorBoolProbe : MonoBehaviour { private static readonly int MovingId = Animator.StringToHash("Moving"); private Animator animator; private bool configured; private bool moving; private void Awake() { animator = GetComponent(); if (animator.runtimeAnimatorController == null) { Debug.LogError("Assign the prepared Animator Controller.", this); enabled = false; return; } foreach (AnimatorControllerParameter parameter in animator.parameters) if (parameter.nameHash == MovingId && parameter.type == AnimatorControllerParameterType.Bool) configured = true; if (!configured) { Debug.LogError("Controller needs the Moving Boolean.", this); enabled = false; } } [ContextMenu("Toggle Moving (Play Mode)")] public void ToggleMoving() { if (!Application.isPlaying || !isActiveAndEnabled || !configured) return; moving = !moving; animator.SetBool(MovingId, moving); Debug.Log("Moving parameter: " + moving, this); } }