using asap.core; using cfg; using DG.Tweening; using Game; using GameCore; using System; using System.Collections.Generic; using TMPro; using UniRx; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.EventSystems; using UnityEngine.UI; public class StopAutoEvent { public bool IsDrawing; } public class FishingPanel_Advanced : MonoBehaviour { public static FishingPanel_Advanced Instance { get; private set; } //private GameObject fx_fishing_maxcomboprefab; //CanvasGroup MaxComboTip; //CanvasGroup MaxComboFx; GameObject MaxComboTip; GameObject MaxComboFx; GameObject btn_draw_combo_down; GameObject btn_draw_combo_top; GameObject btn_up; private Animator _btnAnimator; private Animator _sliderAnimator; private Animator _sliderAnimator2; private CanvasGroup _canvasGroup; [HideInInspector] public LongPressOrClickEventTrigger drawButton; TMP_Text text_play; private GameObject _rank_info; private GameObject _rank_info1; private GameObject _rank_info2; GameObject FX_info_combo; GameObject FX_info_warning_1; GameObject FX_info_warning_2; GameObject FX_info_warning_3; FishingPanelDrawAuto btn_draw_auto; bool AutomaticFishing; FishingFishInfo fishInfo; FishingStart fishingStart; FishingBlood fishBlood; PiercingInfo piercingInfo; float WarningLineLengthRatio = 0.8f; List PiercingSuccessFx; List PiercingSuccess; List MaxComboFxs; bool isOpenPiercing = false; float maxComboTipFadeTime = 0.5f; float maxComboFxFadeTime = 2f; string curFishShakeIdle; FishingData fishingData; FishingUpdateSys fishingUpdateSys; RodSkinData rodSkinData; /// /// 特殊技能相关 /// Transform fx_target_bar_bg; Image bar_target; Transform fx_target_bar; Transform highlight_target; Image highlight; Transform fx_target_bar_highlight; Transform barFx; Transform bloodBossFx; Perk perk; GameObject perk_go; protected CompositeDisposable disposables = new CompositeDisposable(); public bool IsDown() { if (EventSystem.current == null) { return false; } PointerEventData pointerEventData = new PointerEventData(EventSystem.current) { position = Input.mousePosition }; List results = new List(); EventSystem.current.RaycastAll(pointerEventData, results); foreach (RaycastResult result in results) { if (result.gameObject == drawButton.gameObject) { return true; } } return false; } private void Awake() { Instance = this; transform.SetAsFirstSibling(); fishingUpdateSys = gameObject.AddComponent(); fishingData = GContext.container.Resolve(); if (fishingData.IsDuel) { var fishingDuelManager = GContext.container.Resolve(); if (fishingDuelManager != null) { fishingDuelManager.OnFishingChangeStateEvent(FishingChangeState.Cast, fishingData.fishItem.ID); } } int skindID = GContext.container.Resolve().GetRodSkin(fishingData.RodId); rodSkinData = GContext.container.Resolve().TbRodSkinData.GetOrDefault(skindID); isOpenPiercing = GContext.container.Resolve().IsOpenPiercing; GContext.OnEvent().Subscribe(StopAuto).AddTo(disposables); GContext.OnEvent().Subscribe(HideUI).AddTo(disposables); _canvasGroup = GetComponent(); //换按钮 btn_draw_combo_down = transform.Find("safearea/middlepanel/btn_draw/btn_draw_combo_down").gameObject; btn_draw_combo_top = transform.Find("safearea/middlepanel/btn_draw/btn_draw_combo_top").gameObject; text_play = transform.Find("safearea/middlepanel/btn_draw/text_play").GetComponent(); drawButton = transform.Find("safearea/middlepanel/btn_draw").GetComponent(); btn_up = transform.Find("safearea/middlepanel/btn_draw/up").gameObject; //换按钮 drawButton.onLongPress.AddListener((() => { SetBtnAnimatorState(BtnAnimatorState.Pressed); })); drawButton.onUp.AddListener(OnUpButton); drawButton.onDown.AddListener(OnClickButton); drawButton.gameObject.SetActive(false); _btnAnimator = drawButton.GetComponent(); _sliderAnimator = drawButton.transform.Find("slider").GetComponent(); _sliderAnimator2 = transform.Find("fish_info/combo/barRoot/icon").GetComponent(); _rank_info = transform.Find("close_up/FX_info").gameObject; _rank_info1 = transform.Find("close_up/FX_info1").gameObject; _rank_info2 = transform.Find("close_up/FX_info2").gameObject; btn_draw_auto = transform.Find("safearea/middlepanel/btn_draw_auto").GetComponent(); FX_info_combo = transform.Find("tips/FX_info_combo").gameObject; FX_info_warning_1 = transform.Find("tips/FX_info_warning_1").gameObject; FX_info_warning_2 = transform.Find("tips/FX_info_warning_2").gameObject; FX_info_warning_3 = transform.Find("tips/FX_info_warning_3").gameObject; fx_target_bar_bg = transform.Find("fish_info/combo/barRoot/fx_target_bar_bg").transform; fx_target_bar = transform.Find("fish_info/combo/barRoot/bar_target/fx_target_bar").transform; bar_target = transform.Find("fish_info/combo/barRoot/bar_target").GetComponent(); highlight_target = transform.Find("fish_info/combo/barRoot/highlight_target").transform; highlight = transform.Find("fish_info/combo/barRoot/highlight_target/highlight").GetComponent(); fx_target_bar_highlight = transform.Find("fish_info/combo/barRoot/highlight_target/fx_target_bar_highlight").transform; barFx = transform.Find("fish_info/combo/barRoot/fx_ui_lightning").transform; bloodBossFx = transform.Find("fish_info/blood/icon_fish_boss/fx").transform; //MaxComboTip = transform.Find("tips/MaxComboTip").GetComponent(); //MaxComboFx = transform.Find("tips/MaxComboFx").GetComponent(); fishInfo = transform.Find("fish_info").GetComponent(); fishInfo.InitPanel(fishingUpdateSys); fishInfo.gameObject.SetActive(false); fishingStart = fishInfo.transform.Find("start").GetComponent(); fishBlood = fishInfo.transform.Find("blood").GetComponent(); fishBlood.Init(); piercingInfo = transform.Find("piercing_info").GetComponent(); piercingInfo.gameObject.SetActive(false); if (isOpenPiercing) { LoadFx(); } maxComboTipFadeTime = fishingData.fishingBehaviorConf.maxComboTipFadeTime; maxComboFxFadeTime = fishingData.fishingBehaviorConf.maxComboFxFadeTime; perk_go = transform.Find("perk_info/perk_info_1").gameObject; perk_go.SetActive(false); perk = perk_go.transform.Find("perk").GetComponent(); GContext.OnEvent().Subscribe(OnRodPerkTriggerEvent).AddTo(disposables); } void OnRodPerkTriggerEvent(RodPerkTriggerEvent rodPerkTriggerEvent) { Debug.Log("OnRodPerkTriggerEvent" + rodPerkTriggerEvent.PerkID + " " + rodPerkTriggerEvent.level); perk_go.SetActive(false); perk_go.SetActive(true); perk.SetData(rodPerkTriggerEvent.PerkID, rodPerkTriggerEvent.level, fishingData.fishRodData.Quality); } async void LoadFx() { var fxNames = rodSkinData.PiercingSuccessFx; PiercingSuccessFx = new List(); PiercingSuccess = new List(); Transform parent = Camera.main.transform; for (int i = 0; i < fxNames.Count; i++) { var go = await Addressables.LoadAssetAsync(fxNames[i]).Task; if (go != null && Instance != null) { var fx = Instantiate(go, parent); fx.SetActive(false); //fx.transform.localPosition = Vector3.down * 650; PiercingSuccessFx.Add(fx); PiercingSuccess.Add(go); } } MaxComboFxs = new List(); var MaxComboFxParent1 = await Addressables.LoadAssetAsync(rodSkinData.MaxComboFx).Task; if (MaxComboFxParent1 != null) MaxComboFxs.Add(MaxComboFxParent1); var MaxComboParentTip1 = await Addressables.LoadAssetAsync(rodSkinData.MaxComboTip).Task; if (MaxComboParentTip1 != null) MaxComboFxs.Add(MaxComboParentTip1); if (Instance != null) { if (MaxComboFxParent1 != null) MaxComboFx = Instantiate(MaxComboFxParent1, parent); if (MaxComboParentTip1 != null) MaxComboTip = Instantiate(MaxComboParentTip1, parent); MaxComboTip?.SetActive(false); MaxComboFx?.SetActive(false); } } void OnUpButton() { SetBtnAnimatorState(BtnAnimatorState.Normal); } void OnClickButton() { SetBtnAnimatorState(BtnAnimatorState.Clicked); if (fishingData.IsDrawing) { OnClickSkill(); return; } if (isOpenPiercing) { if (fishingStart.curIndex != -1) { StopAllCoroutines(); fishingStart.StopMove(); PiercingInfo(fishingStart.GetCurPos()); } } else { GContext.Publish(new EventUISound("audio_fishing_piercing_noviceguide")); fishingUpdateSys.PiercingFish(100); } } public void SetFishIconDir(bool left) { fishBlood.SetFishIconDir(left); } void PiercingInfo(int index) { fishingUpdateSys.PiercingFish(index); piercingInfo.gameObject.SetActive(true); piercingInfo.Show(index); if (index > 0 && index <= PiercingSuccessFx.Count) { PiercingSuccessFx[index - 1].SetActive(true); } } /// /// 新手引导专用 /// /// void HideUI(HideUI hideUI) { _canvasGroup.alpha = hideUI.hide ? 0 : 1; _canvasGroup.blocksRaycasts = !hideUI.hide; } void StopAuto(StopAutoEvent IsDrawing) { AutomaticFishing = false; btn_draw_auto.gameObject.SetActive(false); if (IsDrawing.IsDrawing) { ShowTensionBar(); drawButton.gameObject.SetActive(true); } } //设置动画状态 public void SetBtnAnimatorState(BtnAnimatorState state) { string nameAni = "Normal1"; string nameAni2 = "Normal1"; _btnAnimator.SetBool("Normal1", false); _btnAnimator.SetBool("Clicked1", false); _btnAnimator.SetBool("Pressed1", false); _sliderAnimator.SetBool("Normal1", false); _sliderAnimator.SetBool("Pressed1", false); _sliderAnimator2.SetBool("Normal1", false); _sliderAnimator2.SetBool("Pressed1", false); switch (state) { case BtnAnimatorState.Pressed: nameAni = "Pressed1"; nameAni2 = "Pressed1"; break; case BtnAnimatorState.Clicked: nameAni = "Clicked1"; nameAni2 = "Pressed1"; break; } _btnAnimator.SetTrigger(nameAni); _sliderAnimator.SetTrigger(nameAni2); _sliderAnimator2.SetTrigger(nameAni2); } public void OnEnable() { DoEnable(); GContext.Publish(new OnSoundStateEvent(1)); text_play.text = LocalizationMgr.GetText("UI_FishingPanel_Advanced_101021"); WarningLineLengthRatio = GContext.container.Resolve().TbGlobalConfig.WarningLineLengthRatio; } private void DoEnable() { //AutomaticFishing = GContext.container.Resolve().AutomaticFishing; _rank_info.gameObject.SetActive(false); _rank_info1.gameObject.SetActive(false); _rank_info2.gameObject.SetActive(false); drawButton.durationThreshold = fishingData.fishRodData.HoldThreshold; //_comboInfoText.text = ""; _canvasGroup.alpha = DeBugPanel.isShow ? 1 : 0; btn_draw_auto.gameObject.SetActive(AutomaticFishing); //MaxComboTip.alpha = 0; //MaxComboFx.alpha = 0; } void SetBoosFish() { fishBlood.FXInfoInit(); bool isBoos = fishBlood.ShowFishBossIcon(fishingData.curFishData.BattleAvatar); if (!string.IsNullOrEmpty(curFishShakeIdle)) { PlayBarAni(curFishShakeIdle, false); } curFishShakeIdle = fishingData.curFishData.ShakeIdle; if (!string.IsNullOrEmpty(curFishShakeIdle)) { PlayBarAni(curFishShakeIdle, true); } } void ShowFishBlood() { SetBoosFish(); fishInfo.ShowState(1); } //UI吃鱼 public void UIEatFish() { //只显示鱼嘴和距离/播放mouse动画 fishBlood.SetFishHPScale(1); } public void UIEatFishEnd() { ////开始Boos鱼的一些列相关 //SetBoosFish(); //换鱼显示节点 ShowFishBlood(); } //完美刺鱼 public async void ExtraDrawingHP(float extraDrawingHP, int waitingZone, float fishHPScale, float damageProtectionTime, bool isEternalDeath) { text_play.text = LocalizationMgr.GetText("UI_FishingPanel_Advanced_101004"); fishInfo.ShowState(-1); fishBlood.SetFishHPScale(fishHPScale); piercingInfo.textBlood[waitingZone - 1].text = extraDrawingHP.ToString("-0"); if (isEternalDeath) { HideDrawButton(); return; } await new WaitForSeconds(damageProtectionTime); if (Instance != null) { ShowTensionBar(); fishBlood.WhiteDOFillAmount(fishHPScale); fishingUpdateSys.UIEatCheck(); } } public async void StartDrawing(float damageProtectionTime) { text_play.text = LocalizationMgr.GetText("UI_FishingPanel_Advanced_101004"); fishInfo.ShowState(-1); fishBlood.SetFishHPScale(1); await new WaitForSeconds(damageProtectionTime); if (Instance != null) { ShowTensionBar(); } } //动画吃鱼结束 重置UI public void OnEatEnd() { SetBoosFish(); btn_up.SetActive(false); fishInfo.fx_ui_barlianji_full.SetActive(false); //MaxComboTip.alpha = 0; MaxComboTip?.SetActive(false); ShowTensionBar(); drawButton.gameObject.SetActive(true); fishInfo.gameObject.SetActive(true); } //鱼脱钩了 public void FishEscape() { fishInfo.ShowState(-1); HideDrawButton(); //await new WaitForSeconds(2f); //ShowDrawButton(); } void ShowTensionBar() { if (PiercingSuccessFx != null && PiercingSuccessFx.Count > 0) { for (int i = 0; i < PiercingSuccessFx.Count; i++) { PiercingSuccessFx[i].SetActive(false); } } fishInfo.ShowTensionBar(); fishInfo.SetTensionBarScale(fishingUpdateSys.ComboZone); ShowFishBlood(); } public void PlayBarAni(string aniName, bool isShake) { float barShakeAmp = fishingUpdateSys.GetBarShakeAmp(); fishInfo.PlayBarAni(aniName, isShake, barShakeAmp); } public void SetTensionBarScale(float ComboZone) { fishInfo.SetTensionBarScale(ComboZone); } public void UpdateTensionBar(int type, float power, float fishSwimAreaZFar, float fishSwimAreaZNear, float linelength) { fishInfo.OnDrawFishingLine(fishSwimAreaZFar, fishSwimAreaZNear, linelength, fishingData.MaxLinelength, WarningLineLengthRatio); fishInfo.UpdateTensionBar(type, power); } public void UpdateComboMultiplayer(float _curComboMultiplayer, bool isMaxZone) { // 全力收线按钮 if (btn_up != null) { btn_up.SetActive(isMaxZone); } fishInfo.fx_ui_barlianji_full.SetActive(isMaxZone); fishInfo.UpdateComboMultiplayer(_curComboMultiplayer); } public void ShowComboTips(bool isShow) { fishInfo.ShowComboTips(isShow); } Transform finger; public void ShowFinger() { if (GuidancePanel.Instance) { var go = GuidancePanel.Instance.finger; finger = Instantiate(go, drawButton.transform); finger.localPosition = new Vector3(0, 0, 0); finger.gameObject.SetActive(true); finger.GetComponent().Play("finger_loop2"); } } public void HideFinger() { if (finger) { Destroy(finger.gameObject); finger = null; } } public void ShowFishInfo(int text, float fishHPScale, bool isCombo, bool crit) { fishBlood.ShowFishInfo(text, fishHPScale, isCombo, crit); } public void ShowFishInfoPos(Vector3 bobber) { fishInfo.ShowFishInfoPos(bobber); } public void HideFishInfo() { fishInfo.gameObject.SetActive(false); //MaxComboFx.alpha = 0; //MaxComboTip.alpha = 0; MaxComboTip?.SetActive(false); MaxComboFx?.SetActive(false); btn_draw_combo_down.SetActive(false); btn_draw_combo_top.SetActive(false); } public void ShowDrawButton() { if (AutomaticFishing) { PiercingInfo(1); btn_draw_auto.StartAuto(); } else { drawButton.gameObject.SetActive(true); } fishInfo.gameObject.SetActive(true); if (isOpenPiercing) { fishInfo.ShowState(0); List waitingSequence = fishingUpdateSys.WaitingSequence; var waitingZone = GContext.container.Resolve().TbRodWaitingZone.GetOrDefault(fishingUpdateSys.WaitingZone); if (waitingZone == null) { waitingSequence = fishingData.fishRodData.WaitingSequence; waitingZone = GContext.container.Resolve().TbRodWaitingZone.GetOrDefault(fishingData.fishRodData.WaitingZone); Debug.LogError("waitingZone==null" + fishingData.fishRodData.WaitingZone); } fishingStart.SetBar(waitingZone, fishingData.StrengthToScale); fishingStart.StopMove(); fishingStart.StartMoveCo(waitingSequence, fishingData.FishVigilanceToTime, fishingData.RodVigilanceToTime); //StartCoroutine(StartMove()); } else { fishInfo.ShowState(-1); } if (GContext.container.Resolve().GetAnglingCount() != 5) { GContext.Publish(new OnEventTriggerGuide(GetType().Name)); } } //IEnumerator StartMove() //{ // yield return fishingStart.StartCoroutine(fishingStart.StartMove(fishingUpdateSys.WaitingSequence, fishingData.FishVigilanceToTime, fishingData.RodVigilanceToTime)); // if (fishingStart.curIndex == -1) // { // //失败 // PiercingInfo(0); // } //} public void HideDrawButton() { SetBtnAnimatorState(BtnAnimatorState.Normal); drawButton.gameObject.SetActive(false); btn_draw_auto.gameObject.SetActive(false); } public void ShowState(int state) { fishInfo.ShowState(state); } public void ShowRankInfo() { FishData curFishData = fishingData.curFishData; if (!AutomaticFishing && curFishData.FishCardID > 0) { GContext.Publish(new EventUISound(SoundType.audio_fishing_welldone)); if (curFishData.Quality <= 2) { _rank_info.SetActive(curFishData.Quality <= 2);//WELL DONE! return; } else if (curFishData.Quality >= 4) { bool isNew = GContext.container.Resolve().IsNewFish(curFishData.ID); float max = GContext.container.Resolve().GetDataMaxWeight(curFishData.ID); if (isNew || fishingData.fishWeight > max) { _rank_info2.SetActive(true);//incredible! return; } } _rank_info1.SetActive(true);//unbelievable! } } //动画状态枚举 public enum BtnAnimatorState { None = 0, Normal = 1, Pressed = 2, Clicked = 3 } private void OnDisable() { disposables.Dispose(); } private void OnDestroy() { Destroy(MaxComboTip); Destroy(MaxComboFx); Instance = null; SkillRelease(); if (PiercingSuccessFx != null) { for (int i = 0; i < PiercingSuccessFx.Count; i++) { Destroy(PiercingSuccessFx[i]); } PiercingSuccessFx.Clear(); } if (PiercingSuccess != null) { for (int i = 0; i < PiercingSuccess.Count; i++) { Addressables.Release(PiercingSuccess[i]); } PiercingSuccess.Clear(); } if (MaxComboFxs != null) { for (int i = 0; i < MaxComboFxs.Count; i++) { Addressables.Release(MaxComboFxs[i]); } MaxComboFxs.Clear(); } } public void ShowFX_info_combo(bool isStart) { if (isStart) { CloseMaxComboTip(); ShowMaxComboFx(); } else { CloseMaxComboFx(); } btn_draw_combo_down.SetActive(isStart); btn_draw_combo_top.SetActive(isStart); FX_info_combo.SetActive(isStart); btn_up.SetActive(false); fishInfo.fx_ui_barlianji_full.SetActive(false); fishInfo.EndFull(isStart, fishingData.fishRodData.ComboTime); } void ShowMaxComboFx() { if (MaxComboFx != null) { MaxComboFx.transform.DOKill(); MaxComboFx.transform.localScale = Vector3.one; MaxComboFx.SetActive(true); } } async void CloseMaxComboFx() { if (MaxComboFx != null) { MaxComboFx.transform.DOKill(); MaxComboFx.transform.DOScaleX(2f, 0.5f); MaxComboFx.transform.DOScaleY(2f, 0.5f); await Awaiters.Seconds(0.5f); MaxComboFx?.SetActive(false); } } public void ShowMaxComboTip() { //MaxComboTip.DOKill(); //MaxComboTip.DOFadeAlpha(1, maxComboTipFadeTime).SetEase(Ease.Linear); MaxComboTip?.SetActive(true); } public void CloseMaxComboTip() { //MaxComboTip.DOKill(); //MaxComboTip.DOFadeAlpha(0, maxComboTipFadeTime).SetEase(Ease.Linear); MaxComboTip?.SetActive(false); } public void ShowWarning(string warning) { //警告 FX_info_warning_1.SetActive(FX_info_warning_1.name == warning); FX_info_warning_2.SetActive(FX_info_warning_2.name == warning); FX_info_warning_3.SetActive(FX_info_warning_3.name == warning); } public void FXInfo(int index) { fishBlood.FXInfo(index); } public void PlayDistance() { fishInfo.distance_ani.Play(); } public void StopDistance() { fishInfo.distance_ani.Stop(); } #region 特殊技能相关 int FreezeSkill = 0; public bool UISpSkill => FreezeSkill > 0; GameObject FxScreenWarning; GameObject FxScreen; GameObject FxBtn; GameObject FxClick; GameObject FxBreak; GameObject FxBar; GameObject FxFishIcon; GameObject FxTargetBarBg; GameObject FxTargetBar; GameObject FxTargetBarHighlight; string AudioClick; string AudioBreak; public void SetImageSprite(BarTarget barTarget) { if (!string.IsNullOrEmpty(barTarget.bar_target)) { GContext.container.Resolve().SetImageSprite(bar_target, barTarget.bar_target); } if (!string.IsNullOrEmpty(barTarget.highlight)) { GContext.container.Resolve().SetImageSprite(highlight, barTarget.highlight); } } public async void PlaySpKillFx(IFishSpSkillData fishSpSkillData) { BarTarget barTarget = fishSpSkillData.GetBarTarget(); if (barTarget != null) { if (!string.IsNullOrEmpty(barTarget.fx_target_bar_bg) && FxTargetBarBg == null) { FxTargetBarBg = await Addressables.InstantiateAsync(barTarget.fx_target_bar_bg, fx_target_bar_bg).Task; } if (!string.IsNullOrEmpty(barTarget.fx_target_bar) && FxTargetBar == null) { FxTargetBar = await Addressables.InstantiateAsync(barTarget.fx_target_bar, fx_target_bar).Task; } if (!string.IsNullOrEmpty(barTarget.fx_target_bar_highlight) && FxTargetBarHighlight == null) { FxTargetBarHighlight = await Addressables.InstantiateAsync(barTarget.fx_target_bar_highlight, fx_target_bar_highlight).Task; } if (!string.IsNullOrEmpty(barTarget.fxScreenWarning)) { FxScreenWarning = await Addressables.InstantiateAsync(barTarget.fxScreenWarning, transform).Task; FxScreenWarning?.SetActive(false); } } //界面特效 if (FxScreen == null && !string.IsNullOrEmpty(fishSpSkillData.FxScreen())) { FxScreen = await Addressables.InstantiateAsync(fishSpSkillData.FxScreen(), transform).Task; } if (FxBar == null && !string.IsNullOrEmpty(fishSpSkillData.FxBar())) { FxBar = await Addressables.InstantiateAsync(fishSpSkillData.FxBar(), barFx).Task; } if (FxFishIcon == null && !string.IsNullOrEmpty(fishSpSkillData.FxFishIcon())) { FxFishIcon = await Addressables.InstantiateAsync(fishSpSkillData.FxFishIcon(), bloodBossFx).Task; } if (Instance == null) { SkillRelease(); return; } FxScreen?.SetActive(true); FxBar?.SetActive(true); FxTargetBarBg?.SetActive(true); FxTargetBar?.SetActive(true); FxTargetBarHighlight?.SetActive(true); } public void ShowFxScreenWarning(bool isWarning) { FxScreen?.SetActive(!isWarning); FxScreenWarning?.SetActive(isWarning); } public void UpdateTargetBar(float bar_target_p) { float bar_target_fill = (bar_target_p * 86 + 2f) / 90; bar_target.fillAmount = bar_target_fill; highlight_target.localEulerAngles = new Vector3(0, 0, (1 - bar_target_fill) * 90f); bar_target.gameObject.SetActive(bar_target_p > 0.01f); highlight_target.gameObject.SetActive(bar_target_p > 0.01f); } public void StopFxSpKill() { //界面特效 FxScreen?.SetActive(false); FxScreenWarning?.SetActive(false); FxBar?.SetActive(false); FxTargetBarBg?.SetActive(false); FxTargetBarHighlight?.SetActive(false); } /// /// 显示冰冻界面 /// /// public async void ShowFreezeSkill(Freeze freeze) { FreezeSkill = freeze.ClickCount; AudioClick = freeze.AudioClick; AudioBreak = freeze.AudioBreak; //界面特效 if (FxScreen == null) { FxScreen = await Addressables.InstantiateAsync(freeze.FxScreen, transform).Task; } GContext.Publish(new EventUISound(freeze.AudioScreen)); //按钮特效 if (FxBtn == null) { FxBtn = await Addressables.InstantiateAsync(freeze.FxBtn, drawButton.transform).Task; } if (FxClick == null) { FxClick = await Addressables.InstantiateAsync(freeze.FxClick, drawButton.transform).Task; } if (FxBreak == null) { FxBreak = await Addressables.InstantiateAsync(freeze.FxBreak, transform).Task; } if (Instance == null) { SkillRelease(); return; } FxClick?.SetActive(false); FxBreak?.SetActive(false); FxScreen?.SetActive(true); FxBtn?.SetActive(true); } void OnClickSkill() { if (FreezeSkill > 0) { FreezeSkill--; if (FreezeSkill == 0) { //技能结束 FxBreak?.SetActive(true); FxScreen?.SetActive(false); FxBtn?.SetActive(false); GContext.Publish(new EventUISound(AudioBreak)); } else { GContext.Publish(new EventUISound(AudioClick)); } //else if (FxClick != null) //{ //点击特效 FxClick?.SetActive(false); FxClick?.SetActive(true); //} } } public void SkillRelease() { if (FxScreen != null) { Addressables.ReleaseInstance(FxScreen); FxScreen = null; } if (FxScreenWarning != null) { Addressables.ReleaseInstance(FxScreenWarning); FxScreenWarning = null; } if (FxBtn != null) { Addressables.ReleaseInstance(FxBtn); FxBtn = null; } if (FxClick != null) { Addressables.ReleaseInstance(FxClick); FxClick = null; } if (FxBreak != null) { Addressables.ReleaseInstance(FxBreak); FxBreak = null; } if (FxBar != null) { Addressables.ReleaseInstance(FxBar); FxBar = null; } if (FxFishIcon != null) { Addressables.ReleaseInstance(FxFishIcon); FxFishIcon = null; } if (FxTargetBarBg != null) { Addressables.ReleaseInstance(FxTargetBarBg); FxTargetBarBg = null; } if (FxTargetBar != null) { Addressables.ReleaseInstance(FxTargetBar); FxTargetBar = null; } if (FxTargetBarHighlight != null) { Addressables.ReleaseInstance(FxTargetBarHighlight); FxTargetBarHighlight = null; } } #endregion }