using System; using UnityEngine; namespace NBF { // [Serializable] // public enum PlayerState // { // idle = 0, // move = 1, // prepare = 2, // casting = 3, // fishing = 4, // baitFlies = 5, // fight = 6, // fishView = 7, // collectFish = 8, // throwFish = 9, // vehicle = 10, // swiming = 11, // flyModeDebug = 12, // vehicleFishing = 13, // preciseCastIdle = 14, // preciseCastThrow = 15 // } [Serializable] public enum PlayerState : uint { None = 0, /// /// 闲置等待中 /// Idle = 1, /// /// 准备抛竿 /// Prepare = 2, /// /// 抛竿中 /// Throw = 3, /// /// 钓鱼中 /// Fishing = 4, /// /// 溜鱼中 /// Fight = 5 } public class FPlayerData : MonoService { private PlayerState _previousPlayerState = PlayerState.Idle; private PlayerState _playerState; public bool ChangeItem; public bool Run; public bool IsGrounded; public float Speed; public float RotationSpeed; public float ReelSpeed; public float LineTension; /// /// 是否路亚竿 /// public bool IsLureRod; public Vector2 MoveInput; /// /// /// public float EyeAngle; public PlayerState PreviousState => _previousPlayerState; public PlayerState State { get => _playerState; set { _previousPlayerState = _playerState; _playerState = value; NextState = value; OnStateChange?.Invoke(_playerState); } } [SerializeField] private PlayerState NextState; public event Action OnStateChange; private void Start() { NextState = State; } private void Update() { if (NextState != State) { State = NextState; } } } }