先修复一下,错误的场景 删除不必要的钓场资产 修复into场景 update:更新meta文件,修复报错 update:修复资源 修复第一章节建造 修复建造第三章 update:删除多余内容 update:更新README.md update:还原图标 update:更新README update:更新配置
150 lines
4.2 KiB
C#
150 lines
4.2 KiB
C#
using asap.core;
|
|
using GameCore;
|
|
using System;
|
|
using System.Collections;
|
|
using UnityEngine;
|
|
using UniRx;
|
|
using TMPro;
|
|
using UnityEngine.UI;
|
|
using cfg;
|
|
using UnityEngine.AddressableAssets;
|
|
|
|
public class AquariumCloudPanel : MonoBehaviour
|
|
{
|
|
Animation ani;
|
|
IDisposable disposable;
|
|
Image image_map;
|
|
TMP_Text text_map;
|
|
TMP_Text text_level;
|
|
AquariumManagerData data;
|
|
int type = 0;
|
|
|
|
AudioClip doorvault_gear;
|
|
Sound sound_doorvault_gear;
|
|
private void Awake()
|
|
{
|
|
ani = GetComponent<Animation>();
|
|
disposable = GContext.OnEvent<EndTransition>().Subscribe(EndTransition);
|
|
image_map = transform.Find("RandomMapPanel/Item/img_map").GetComponent<Image>();
|
|
text_map = transform.Find("RandomMapPanel/result/text_map").GetComponent<TMP_Text>();
|
|
text_level = transform.Find("RandomMapPanel/result/fishcard/text_level").GetComponent<TMP_Text>();
|
|
|
|
type = FishingAquariumAct.CloudType;
|
|
StartCoroutine(OnStart());
|
|
Synchrodata();
|
|
}
|
|
void Synchrodata()
|
|
{
|
|
//从服务器拿数据
|
|
var dataSever = AquariumManager.GetAquariumManagerData();
|
|
if (dataSever != null)
|
|
{
|
|
data = dataSever;
|
|
if (data != null)
|
|
{
|
|
Tables _tables = GContext.container.Resolve<Tables>();
|
|
var mapData = _tables.TbMapData.DataMap[data.mapId];
|
|
GContext.container.Resolve<IUIService>().SetImageSprite(image_map, mapData.Bg);
|
|
text_map.text = LocalizationMgr.GetText(mapData.Name_l10n_key);
|
|
string levelLV = LocalizationMgr.GetText("UI_FishingMapPanel_101006");
|
|
int fishCardLevel = GContext.container.Resolve<PlayerFishData>().GetFishLevelByMap(data.mapId);
|
|
text_level.text = levelLV + fishCardLevel.ToString();
|
|
}
|
|
}
|
|
}
|
|
IEnumerator OnStart()
|
|
{
|
|
string cloud_in = "aquarium_cloud_in_2";
|
|
float time = 0.75f;
|
|
switch (type)
|
|
{
|
|
case 2:
|
|
cloud_in = "aquarium_cloud_in_3";
|
|
time = 1.25f;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if (disposable != null)
|
|
{
|
|
ani.Play(cloud_in);
|
|
|
|
}
|
|
yield return new WaitForSeconds(time);//入场动画播完
|
|
PlayRodAudio("audio_ui_aquarium_doorvault_gear");
|
|
if (disposable != null)
|
|
{
|
|
ani.Play("aquarium_cloud_loop_2");
|
|
}
|
|
}
|
|
|
|
void StopRodAudio()
|
|
{
|
|
if (doorvault_gear)
|
|
{
|
|
Addressables.Release(doorvault_gear);
|
|
doorvault_gear = null;
|
|
}
|
|
if (sound_doorvault_gear)
|
|
{
|
|
sound_doorvault_gear.audioSource.Stop();
|
|
sound_doorvault_gear.ReturnPool();
|
|
sound_doorvault_gear = null;
|
|
}
|
|
}
|
|
async void PlayRodAudio(string audioName)
|
|
{
|
|
StopRodAudio();
|
|
doorvault_gear = await Addressables.LoadAssetAsync<AudioClip>(audioName).Task;
|
|
if (disposable == null)
|
|
{
|
|
if (doorvault_gear)
|
|
{
|
|
Addressables.Release(doorvault_gear);
|
|
doorvault_gear = null;
|
|
}
|
|
return;
|
|
}
|
|
sound_doorvault_gear = GContext.container.Resolve<ISoundService>().GetNewUISound(doorvault_gear);
|
|
sound_doorvault_gear.audioSource.Play();
|
|
sound_doorvault_gear.audioSource.loop = true;
|
|
}
|
|
public void EndTransition(EndTransition endTransition)
|
|
{
|
|
StartCoroutine(End());
|
|
StopRodAudio();
|
|
}
|
|
private void OnDisable()
|
|
{
|
|
Dispose();
|
|
}
|
|
IEnumerator End()
|
|
{
|
|
string cloud_out = "aquarium_cloud_out_2";
|
|
float time = 1.25f;
|
|
switch (type)
|
|
{
|
|
case 1:
|
|
case 5:
|
|
cloud_out = "aquarium_cloud_out_3";
|
|
time = 0.866f;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
image_map.gameObject.SetActive(false);
|
|
ani.Play(cloud_out);
|
|
Dispose();
|
|
yield return new WaitForSeconds(time);//退场动画播完
|
|
UIManager.Instance.DestroyUI(UITypes.AquariumCloudPanel);
|
|
}
|
|
void Dispose()
|
|
{
|
|
disposable?.Dispose();
|
|
disposable = null;
|
|
}
|
|
|
|
}
|