122 lines
3.3 KiB
C#
122 lines
3.3 KiB
C#
using Spine.Unity;
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
using UnityEngine;
|
|
using UnityEngine.AddressableAssets;
|
|
using UnityEngine.UI;
|
|
|
|
public class MatchHat : MonoBehaviour
|
|
{
|
|
int index;
|
|
public Button btn;
|
|
public Image image_prop;
|
|
public Transform fx_break;
|
|
GameObject fx;
|
|
public Animation ani;
|
|
public SkeletonGraphic spine;
|
|
public Action<int> OnClickItem;
|
|
[Space(10)]
|
|
// 动画/Spine 名称常量
|
|
public string AniInitial = "eventMatchEasterOuterInitial";
|
|
public string AniUp = "eventMatchEasterOuterUp";
|
|
public string AniDown = "eventMatchEasterOuterDown";
|
|
public string AniDisappear = "eventMatchEasterOuterDisappear";
|
|
public string AniDisappearUp = "eventMatchEasterOuterSpecialDisappear";
|
|
|
|
public string AniShow = "eventMatchEasterSpecialShow";
|
|
public string AniSpDisappear = "eventMatchEasterSpecialDisappear";
|
|
public string AniTip = "eventMatchEasterOuterTip";
|
|
[Space(10)]
|
|
public string SpineDisappear = "match_easter_special_disappear";
|
|
public string SpineShow = "match_easter_special_show";
|
|
|
|
private void Start()
|
|
{
|
|
btn.onClick.AddListener(() =>
|
|
{
|
|
OnClickItem?.Invoke(index);
|
|
});
|
|
}
|
|
|
|
/// <summary>
|
|
/// 帽子的状态
|
|
/// </summary>
|
|
/// <param name="state">状态值 0:未开启 1:开启中 2:已开启</param>
|
|
public void Init(int index, int state, string fxName)
|
|
{
|
|
this.index = index;
|
|
btn.gameObject.SetActive(state == 0);
|
|
ani.gameObject.SetActive(state != 2);
|
|
spine.gameObject.SetActive(false);
|
|
if (state != 2)
|
|
{
|
|
if (state == 1)
|
|
{
|
|
ani.Play(AniUp);
|
|
}
|
|
else if (state == 0)
|
|
{
|
|
ani.Play(AniInitial);
|
|
}
|
|
LoadFx(fxName);
|
|
}
|
|
}
|
|
async void LoadFx(string fxName)
|
|
{
|
|
|
|
if (fx != null)
|
|
{
|
|
Addressables.ReleaseInstance(fx);
|
|
}
|
|
fx = await Addressables.InstantiateAsync(fxName, fx_break).Task;
|
|
}
|
|
/// 原地盖回帽子
|
|
public void PlayDown()
|
|
{
|
|
btn.gameObject.SetActive(true);
|
|
ani.Play(AniDown);
|
|
}
|
|
public void PlayInitial()
|
|
{
|
|
ani.Play(AniInitial);
|
|
}
|
|
/// <summary>
|
|
/// 播放翻开动画
|
|
/// </summary>
|
|
public void PlayUp()
|
|
{
|
|
btn.gameObject.SetActive(false);
|
|
ani.Play(AniUp);
|
|
}
|
|
|
|
/// - 帽子消失,物品放大,微微晃动,物品缩小 + 透明
|
|
public void PlayDisappear()
|
|
{
|
|
ani.Play(AniDisappear);
|
|
}
|
|
/// - 套索消失,物品放大,微微晃动,物品缩小 + 透明
|
|
public void PlayDisappearUp()
|
|
{
|
|
ani.Play(AniDisappearUp);
|
|
}
|
|
/// <summary>
|
|
/// - 随机套走 两对物品匹配的帽子(共 4 顶)- 物品放大,微微晃动,物品缩小 + 透明
|
|
/// </summary>
|
|
public void PlaySpShow()
|
|
{
|
|
btn.gameObject.SetActive(false);
|
|
spine.gameObject.SetActive(true);
|
|
spine.AnimationState.SetAnimation(0, SpineShow, false);
|
|
ani.Play(AniShow);
|
|
}
|
|
public void PlaySpDisappear()
|
|
{
|
|
spine.AnimationState.SetAnimation(0, SpineDisappear, false);
|
|
ani.Play(AniSpDisappear);
|
|
}
|
|
public void ShowTips()
|
|
{
|
|
ani.Play(AniTip);
|
|
}
|
|
}
|