using System; using UnityEngine; using UnityEngine.Serialization; namespace NBF { public abstract class FPlayerGear : MonoBehaviour { private bool _isInit; public FPlayer Owner { get; protected set; } public FGearData GearData { get; protected set; } public FRod Rod { get; protected set; } public void Start() { // OnStart(); } public void Initialize(FPlayer player, FGearData gearData = null) { Owner = player; Rod = Owner.Gears.Rod; GearData = gearData; OnStart(); _isInit = true; } public void Update() { if (!_isInit) return; if (!Owner || Owner.Data == null) return; if (!Owner.Gears) return; OnUpdate(); } private void FixedUpdate() { if (!_isInit) return; OnFixedUpdate(); } private void LateUpdate() { if (!_isInit) return; OnLateUpdate(); } protected virtual void OnStart() { } protected virtual void OnUpdate() { } protected virtual void OnFixedUpdate() { } protected virtual void OnLateUpdate() { } #region 工具方法 protected void CheckDistance(Transform target, float distance = 0.01f) { var dis = Vector3.Distance(transform.position, target.position); if (dis > distance) { // transform.position = target.position; } } #endregion } }