157 lines
3.8 KiB
C#
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);
|
|
}
|
|
}
|