OvertakingLegend/Assets/UIFrameWork/Script/StuffEffects.cs

157 lines
3.8 KiB
C#

using AssetKits.ParticleImage;
using System.Collections;
using UnityEngine;
using UnityEngine.Events;
/// <summary>
/// 材料效果
/// </summary>
public class StuffEffects : MonoBehaviour
{
/// <summary>
/// 生成音效次数
/// </summary>
private int generateAudioNumber;
/// <summary>
/// 到达音效次数
/// </summary>
private int arriveAudioNumber;
/// <summary>
/// UI粒子
/// </summary>
public ParticleImage particleImage;
/// <summary>
/// 结束事件
/// </summary>
private UnityAction endAction;
/// <summary>
/// 材料类型
/// </summary>
private E_StuffType e_StuffType;
/// <summary>
/// 初始化
/// </summary>
/// <param name="sprite">图标</param>
/// <param name="targtet">目标</param>
public void Init(E_StuffType e_StuffType, Transform targtet,UnityAction callBack, float number, bool isTrails,int generateAudioNumber,int arriveAudioNumber)
{
this.generateAudioNumber = generateAudioNumber;
this.arriveAudioNumber = arriveAudioNumber;
particleImage.attractorTarget = targtet;
particleImage.rateOverTime = number;
this.e_StuffType = e_StuffType;
endAction = callBack;
SetSprite();
SetScale();
SetTrails(isTrails);
}
/// <summary>
/// 设置图片
/// </summary>
private void SetSprite()
{
switch (e_StuffType)
{
case E_StuffType.Money:
YooAssetManager.Instance.LoadAssetAsync<Sprite>(PackagesName.GameData, MyConstant.MoneyIcon, (sprite) =>
{
particleImage.sprite = sprite;
});
break;
}
}
/// <summary>
/// 设置拖尾
/// </summary>
private void SetTrails(bool isTrails)
{
particleImage.trailsEnabled = isTrails;
Color color=Color.white;
switch (e_StuffType)
{
case E_StuffType.Money:
color = MyConstant.Green;
break;
}
particleImage.trailColorOverLifetime = new ParticleSystem.MinMaxGradient(color);
}
/// <summary>
/// 设置缩放
/// </summary>
private void SetScale()
{
Vector3 scale=Vector3.zero;
switch (e_StuffType)
{
case E_StuffType.Money:
scale = Vector3.one;
break;
}
transform.localScale = scale;
}
/// <summary>
/// 生成
/// </summary>
public void Generate()
{
switch (e_StuffType)
{
case E_StuffType.Money:
PlayAudio(5, MyConstant.GenerateMoneyAudio);
break;
}
}
/// <summary>
/// 到达终点
/// </summary>
public void ReachEndPoint()
{
switch (e_StuffType)
{
case E_StuffType.Money:
PlayAudio(arriveAudioNumber, MyConstant.ArriveMoneyAudio);
break;
}
endAction?.Invoke();
}
/// <summary>
/// 播放音效
/// </summary>
/// <param name="number"></param>
public void PlayAudio(int number, string audio)
{
StartCoroutine(E_PlayAudio(number, YooAssetManager.Instance.LoadAssetSync<AudioClip>(PackagesName.GameData, audio)));
}
/// <summary>
///播放音效协程
/// </summary>
private IEnumerator E_PlayAudio(int number, AudioClip audioClip)
{
for (int i = 0; i < number; i++)
{
AudioManager.Instance.PlaySound(audioClip);
yield return new WaitForSeconds(0.08f);
}
}
/// <summary>
/// 回收
/// </summary>
public void Reclaim()
{
CachePoolManager.Instance.Put(this.gameObject);
}
}