Unity实现领取奖励特效

本文实例为大家分享了Unity实现领取奖励特效的具体代码,供大家参考,具体内容如下

一、效果演示

二、实现

导入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>
 /// 显示奖励特效
 /// </summary>
 /// <param name="startPos">实例化出来的位置</param>
 /// <param name="targetPos">目标位置</param>
 /// <param name="parent">父物体</param>
 /// <param name="prefabName">预制体名称</param>
 /// <param name="siblingIndex">子层级下的索引</param>
 /// <param name="num">实例化的数量</param>
 /// <param name="onFinish">回调</param>
 public void ShowAwardEffect(Vector3 startPos, Vector3 targetPos, Transform parent, string prefabName, int siblingIndex = -1, int num = 10, Action onFinish = null)
 {
  //渲染UI的相机名称和画布名称
  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));//根据项目路径进行修改
   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();
  });
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Unity 2017使用UGUI实现大转盘抽奖

    本文实例为大家分享了Unity 2017实现大转盘抽奖的具体代码,供大家参考,具体内容如下 涉及到的插件:Dotween 在"Hierarchy"面板创建一个Image,这个Image用来显示大转盘的那个圆盘,我用的UGUI里默认的那个圆圆的图片,放大后很模糊,不过不打紧 接着创建一个Panel名字改成"奖品组",这个是奖品的父物体,记得吧Panel里的Image,Canvas Renderer组件删了 然后在创建一个Panel名字改成"Awar"

  • unity实现简单抽奖系统

    这段时间工作比较空闲,想做个抽奖系统,发现网上的抽奖系统看不懂,然后自己做了一个可以随意定义奖品概率,不管什么时候停下来指针最终都会转到指定的奖品哪. 废话不多说,动手一步一步来. 这个抽奖系统就使用了两张图片,一个指针,一个圆形的图片. 然后做一个预制体,图片就是圆形图片,image type选择filled,fill amount控制这个图片的面积大小,同时也是该图片的概率,Text组件是该奖品的名称. 再接下来就做一下界面布局的工作 Bg就是那个灰色的图片,Rotate是个空物体,用来挂在

  • Unity实现跑马灯抽奖效果

    Unity 跑马灯抽奖效果实现代码,供大家参考,具体内容如下 这边用到插件是NGUI+Dotween,思路简单说下:先排版,通过移动图片蒙版来实现效果. 下面是排版和文件目录. 代码部分是通过余数去确认停的位置,boxlist通过unity拖拉加入数据,chooseBoxList直接通过余数判断添加. 代码量很少,稍微看下就明白了. 直接上代码了: using System; using System.Collections; using System.Collections.Generic;

  • Unity实现领取奖励特效

    本文实例为大家分享了Unity实现领取奖励特效的具体代码,供大家参考,具体内容如下 一.效果演示 二.实现 导入Dotween插件 完整代码 using System; using UnityEngine; using DG.Tweening; /// <summary> /// 特效管理 /// </summary> public class EffectManager : MonoBehaviour { //单例 private static EffectManager _in

  • Unity实现粒子光效导出成png序列帧

    本文为大家分享了Unity实现粒子光效导出成png序列帧的具体代码,供大家参考,具体内容如下 这个功能并不是很实用,不过美术同学有这样的需求,那么就花了一点时间研究了下. 我们没有使用Unity的引擎,但是做特效的同学找了一批Unity的粒子特效,希望导出成png序列帧的形式,然后我们的游戏来使用.这个就相当于拿Unity做了特效编辑器的工作.这个并不是很"邪门",因为用幻影粒子,或者3dmax,差不多也是这个思路,只不过那些软件提供了正规的导出功能,而Unity则没有. 先上代码 u

  • Unity实现旋转扭曲图像特效

    旋转扭曲特效是指在一个圆形区域内扭曲所渲染的图像,其他像素的旋转程度随着距离的变化而变化.具体可以通过修改Shader来实现. 原始图片 扭曲图片 /*==================================================== 屏幕扭曲特效Shader ======================================================*/ Shader "Hidden/TwirlEffects" { Properties { _M

  • Unity shader实现百叶窗特效

    本文实例为大家分享了Unity shader百叶窗展示的具体代码,供大家参考,具体内容如下 1.将图片划分为水平N栏,代码如下: Shader "Unlit/BYCShader" { Properties { [PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {} _Color ("Tint", Color) = (1,1,1,1) _StencilComp

  • Unity实现角色受击身体边缘发光特效

    游戏中经常需要制作角色受击打的身体边缘光效果,本文使用的方法是,给Renderer叠加一个制作好的边缘光材质球,并通过脚本动态控制边缘光的渐变效果,表现出受击后的边缘光效果 工程结构如下 1 创建一个材质球HittedMatEffect.mat放在Assets/Resources/Material目录中,使用TransparentRim.shader 注意代码中用了Resources.Load,所以必须放在这个目录里,你可以改成别的方式 2 场景中创建一个Sphere(球体),挂上Runner脚

  • IOS实现签到特效(散花效果)的实例代码

    本文讲述了IOS实现签到特效(散花效果)实例代码.分享给大家供大家参考,具体如下: 散花特效 #import <Foundation/Foundation.h> /// 领取奖励成功 @interface RewardSuccess : NSObject /** * 成功动画 */ + (void)show; @end #import "RewardSuccess.h" #import "RewardSuccessWindow.h" #define Em

  • Unity Shader实现水墨效果

    Unity Shader学习:水墨效果 偶然在网上看到9级铁甲蛹大神的水墨风格后处理觉得挺有意思,参照着实现一下,还是涉及到之前油画效果的算法,叫什么滤波暂时不清楚,应该用来处理手绘效果挺多的. 水墨风格基本原理:高斯模糊原始图像,用深度算出边缘进行描边,最后用画笔效果的滤波完成最终图像. 有需要可以用Post Proces改变颜色范围,更接近水墨的颜色. C#部分: //屏幕后处理基类 using UnityEngine; using System.Collections; //非运行时也触发

  • Unity实现10天签到系统

    本文实例为大家分享了Unity实现10天签到系统的具体代码,供大家参考,具体内容如下 实现功能: 正常在游戏中签到,并把剩下的倒计时给显示出来.时间是变化的,没有用gif是显示,将就着看- 废话不多说,上代码: public class SignPanelUI : MonoBehaviour { public const string SignNumPrefs = "SignNum";//领取次数的字符串 public const string SignDataPrefs = &quo

  • Unity之跑马灯抽奖效果单抽与连抽(附demo)

    本文主要介绍了Unity之跑马灯抽奖效果单抽与连抽,分享给大家,具体如下: 效果图 单次抽奖效果 跳过动画抽奖效果 三连抽抽奖效果 设计思路 点击按钮 ,根据需求(概率)计算本次抽奖获得物品模拟转动 (先加速后减速), 一段时间后停止连抽的情况下等所有奖品动画都表演完成才结束跳过动画设计,有跳过时抽奖速度直接到最大,并进入可中奖 场景搭建 一个按钮,一个组奖品放到一个父物体上. 奖品元素,有两种状态,一种旋转状态,一种中奖状态. 代码 using System; using System.Col

  • 浅谈Unity中的Shader

    一.Shader基础知识 1.1.什么是Shader 在讲什么是Shader之前我们先看看下面两段代码  这两段代码实现的功能都是提取 2D 图像上每个像素点的颜色值,第一段代码是用c++写的,在cup上面运行,它需要循环遍历每个像素点,第二段代码是CG代码,在GPU上面运行,它只需要一行代码就能实现同样的功能.GPU是专门用来进行图形处理的,而Shader,就是GPU执行的一段针对3D对象进行操作的程序. 维基百科上对shader的解释是这样 Shader(着色器)应用于计算机图形学领域,指一

随机推荐