using cfg.FunctionLockCfg; using Cysharp.Threading.Tasks; using dnlib.DotNet.MD; using Framework; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; namespace Gameplay.FunctionLock { public sealed class FunctionLock : MonoBehaviour { /// /// 动画时长 /// private const float ANIM_TIME = 1.4f; /// /// 功能锁id /// public int FunctionLockId; /// /// 功能按钮 /// public Button ButtonFunction; /// /// 功能锁根节点 /// private GameObject Root; /// /// 解锁动画 /// private Animator animator; /// /// 解锁描述 /// private TMP_Text textContent; /// /// 解锁配置 /// private DataFunctionLock cfg; private void Awake() { Root = gameObject; animator = Root.transform.Find("Lock").GetComponent(); textContent = Root.transform.Find("Lock/TextContent")?.GetComponent(); } private void Start() { cfg = TableManager.Instance.Tables.FunctionLockConfig.Get(FunctionLockId); if (null == cfg) { DebugUtil.LogError($"功能锁配置获取错误id;{FunctionLockId}"); return; } SetState(false); // 设置状态 } private void Update() { if (Input.GetKeyDown(KeyCode.E)) PlayUnlockAnim(); } /// /// 播放解锁动画 /// public async void PlayUnlockAnim() { animator.SetTrigger("Unlock"); //FunctionLockManager.Instance.SaveServer(cfg.ServerFlag); await UniTask.WaitForSeconds(ANIM_TIME); SetState(true); } /// /// 设置状态 /// /// private void SetState(bool isUnlock) { if (isUnlock)//FunctionLockManager.Instance.IsUnlock(cfg.ServerFlag)) { Root.IsScaleShow(false); ButtonFunction.interactable = true; } else { textContent.text = cfg.Desc; Root.IsScaleShow(true); ButtonFunction.interactable = false; } } } }