using asap.core; using cfg; using GameCore; using TMPro; using UniRx; using UnityEngine; using UnityEngine.AddressableAssets; using UnityEngine.UI; public class BubbleTaskInfo : MonoBehaviour { Image require; TMP_Text text_title; GameObject BgTitle; Image bgTitlePos; string curBgTitle; protected CompositeDisposable disposables = new CompositeDisposable(); private void Start() { var _fishingEventData = GContext.container.Resolve(); var collectingTarget = _fishingEventData.collectingTarget; if (collectingTarget != null) { CollectingTargetInit init = _fishingEventData.collectingTargetInit; SetInfo(init); } GContext.OnEvent().Subscribe(OnChangeLanguage).AddTo(disposables); } void OnChangeLanguage(ChangeLanguageEvent changeLanguageEvent = null) { var _fishingEventData = GContext.container.Resolve(); var collectingTarget = _fishingEventData.collectingTarget; if (collectingTarget != null) { text_title.text = LocalizationMgr.GetText(_fishingEventData.collectingTargetInit.Title_l10n_key); } } public void SetInfo(CollectingTargetInit init) { require = transform.Find("btn_icon/icon").GetComponent(); bgTitlePos = transform.Find("bg").GetComponent(); text_title = transform.Find("text_title").GetComponent(); bgTitlePos.enabled = false; var tables = GContext.container.Resolve(); IUIService uIService = GContext.container.Resolve(); text_title.text = LocalizationMgr.GetText(init.Title_l10n_key); var item = tables.TbItem[init.TokenID]; uIService.SetImageSprite(require, item.Icon); ShowFxTitle(init.BgTitle); } async void ShowFxTitle(string bgTitle) { if (BgTitle != null && BgTitle.name != bgTitle) { Addressables.ReleaseInstance(BgTitle); BgTitle = null; } if (!string.IsNullOrEmpty(bgTitle) && BgTitle == null) { if (curBgTitle == bgTitle) { return; } curBgTitle = bgTitle; BgTitle = await Addressables.InstantiateAsync(bgTitle, bgTitlePos.transform).Task; if (BgTitle != null) { if (!enabled || curBgTitle != bgTitle) { Addressables.ReleaseInstance(BgTitle); BgTitle = null; } else { BgTitle.name = bgTitle; } } } } private void OnDestroy() { if (BgTitle != null) { Addressables.ReleaseInstance(BgTitle); BgTitle = null; } disposables?.Dispose(); } }