Unity實(shí)現(xiàn)領(lǐng)取獎(jiǎng)勵(lì)特效
本文實(shí)例為大家分享了Unity實(shí)現(xiàn)領(lǐng)取獎(jiǎng)勵(lì)特效的具體代碼,供大家參考,具體內(nèi)容如下
一、效果演示

二、實(shí)現(xiàn)
導(dǎo)入Dotween插件
完整代碼
using System;
using UnityEngine;
using DG.Tweening;
/// <summary>
/// 特效管理
/// </summary>
public class EffectManager : MonoBehaviour
{
//單例
private static EffectManager _instance;
public static EffectManager Instance
{
get
{
if (_instance == null)
{
GameObject go = new GameObject(typeof(EffectManager).ToString());
DontDestroyOnLoad(go);
_instance = go.AddComponent<EffectManager>();
}
return _instance;
}
}
/// <summary>
/// 顯示獎(jiǎng)勵(lì)特效
/// </summary>
/// <param name="startPos">實(shí)例化出來的位置</param>
/// <param name="targetPos">目標(biāo)位置</param>
/// <param name="parent">父物體</param>
/// <param name="prefabName">預(yù)制體名稱</param>
/// <param name="siblingIndex">子層級(jí)下的索引</param>
/// <param name="num">實(shí)例化的數(shù)量</param>
/// <param name="onFinish">回調(diào)</param>
public void ShowAwardEffect(Vector3 startPos, Vector3 targetPos, Transform parent, string prefabName, int siblingIndex = -1, int num = 10, Action onFinish = null)
{
//渲染UI的相機(jī)名稱和畫布名稱
Camera uiCamera = GameObject.Find("UICamera").GetComponent<Camera>();
Canvas uiCanvas = GameObject.Find("Canvas").GetComponent<Canvas>();
if (uiCamera == null || uiCanvas == null)
{
return;
}
var seq = DOTween.Sequence();
for (int i = 0; i < num; i++)
{
GameObject prefab = Instantiate(Resources.Load<GameObject>(prefabName));//根據(jù)項(xiàng)目路徑進(jìn)行修改
prefab.transform.SetParent(parent, false);
if (siblingIndex != -1)
{
prefab.transform.SetSiblingIndex(siblingIndex);
}
float randomTime = UnityEngine.Random.Range(0.4f, 0.6f);
prefab.transform.position = startPos;
seq.Insert(0, prefab.transform.DOMove(startPos + UnityEngine.Random.insideUnitSphere, randomTime)).SetEase(Ease.OutSine);
seq.Insert(randomTime, prefab.transform.DOMove(targetPos, UnityEngine.Random.Range(0.8f, 1.2f)).SetEase(Ease.InOutSine).OnComplete
(() =>
{
Destroy(prefab);
}));
}
seq.SetUpdate(true);
seq.AppendCallback(() =>
{
onFinish?.Invoke();
});
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
實(shí)現(xiàn)ASP.NET無刷新下載并提示下載完成的開發(fā)思路
這篇文章主要介紹了實(shí)現(xiàn)ASP.NET無刷新下載并提示下載完成的開發(fā)思路的相關(guān)資料,需要的朋友可以參考下2015-10-10
c#反射機(jī)制學(xué)習(xí)和利用反射獲取類型信息
反射(Reflection)是.NET中的重要機(jī)制,通過放射,可以在運(yùn)行時(shí)獲得.NET中每一個(gè)類型(包括類、結(jié)構(gòu)、接口和枚舉等)的成員,包括方法、屬性、事件,以及構(gòu)造函數(shù)等,還可以獲得每個(gè)成員的名稱、限定符和參數(shù)等,有了反射,即可對(duì)每一個(gè)類型了如指掌2014-01-01
C#實(shí)現(xiàn)將32位MD5摘要串轉(zhuǎn)換為128位二進(jìn)制字符串的方法
這篇文章主要介紹了C#實(shí)現(xiàn)將32位MD5摘要串轉(zhuǎn)換為128位二進(jìn)制字符串的方法,涉及C#字符串遍歷、加密與轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-04-04
C#實(shí)現(xiàn)文件篩選讀取并翻譯的自動(dòng)化工具
這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)文件篩選及讀取內(nèi)容,并翻譯的自動(dòng)化工具,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-03-03
C#使用Microsoft消息隊(duì)列(MSMQ)的示例詳解
Microsoft?Message?Queuing?(MSMQ)?是在多個(gè)不同的應(yīng)用之間實(shí)現(xiàn)相互通信的一種異步傳輸模式,本文主要介紹了C#如何使用Microsoft消息隊(duì)列,需要的可以了解下2024-01-01
asp.net core mvc權(quán)限控制:在視圖中控制操作權(quán)限
本文主要介紹了asp.net core mvc權(quán)限控制:在視圖中控制操作權(quán)限。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-02-02
C# 利用代理爬蟲網(wǎng)頁的實(shí)現(xiàn)方法
這篇文章主要介紹了C# 利用代理爬網(wǎng)頁的實(shí)現(xiàn)方法的相關(guān)資料,希望通過本能幫助到大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10

