服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - Unity实现老虎机滚动抽奖效果的示例代码

Unity实现老虎机滚动抽奖效果的示例代码

2022-11-15 14:27佛系老陈 C#

这篇文章主要介绍了Unity实现老虎机滚动抽奖效果的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

直接看下效果图吧:

Unity实现老虎机滚动抽奖效果的示例代码

制作思路:

设计四张图片,五个点,每个图片同时向下一个点移动,到最后一个就回到0号点,以此循环。

Unity实现老虎机滚动抽奖效果的示例代码

场景搭建:

  • 创建Image命名为Bg作为电视框背景;
  • 创建Image命名Mask并添加Mask组件作为电视框内容显示遮罩框;
  • 创建四个Image作为滚动图片;
  • 创建开始抽奖按钮;

Unity实现老虎机滚动抽奖效果的示例代码

PS:实际项目中可以根据需求来动态修改图片显示,以达到的控制每次抽奖奖品内容。

源码分享:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
 
public class ScollToDraw : MonoBehaviour
{
      // 抽奖按钮
      public Button DrowBtn;
      
      // 奖励图片
      public Image[] ArardImgArr;
 
      // 转盘速度
      public float AniMoveSpeed = 3f;
 
      // 进度
      private float[] progress = new[] {0f, 1f, 2f, 3f, 4f};
 
      // 转动动画位置
      private Vector3[] AniPosV3 = new[]
            {Vector3.up * 240, Vector3.up * 120, Vector3.zero, Vector3.down * 120, Vector3.down * 240};
 
      // 自动暂停标识
      private bool isAutoStop;
      // 抽奖结束 停止刷新界面UI
      private bool isStopUpdatePos;
      
      void Start()
      {
            DrowBtn.onClick.AddListener(DrawFun);
            isAutoStop = false;
            isStopUpdatePos = false;
      }
 
      void Update()
      {
            if (isStopUpdatePos) return;
            
            float t = Time.deltaTime * AniMoveSpeed;
            for (int i = 0; i < ArardImgArr.Length; i++)
            {
                  progress[i] += t;
                  ArardImgArr[i].transform.localPosition = MovePosition(i);
            }
      }
      
      // 获取下一个移动到的位置
      Vector3 MovePosition(int i)
      {
            int index = Mathf.FloorToInt(progress[i]);
            if (index > AniPosV3.Length - 2)
            {
                  //保留其小数部分,不能直接赋值为0
                  progress[i] -= index;
                  index = 0;
                  // 索引为2的到底了,索引为0的就在正中心
                  if (i == 2 && isAutoStop)
                  {
                        isStopUpdatePos = true;
                        Debug.Log("展示奖励界面...");
                        // todo...获取奖励数据维护
                  }
                  return AniPosV3[index];
            }
            else
            {
                  return Vector3.Lerp(AniPosV3[index], AniPosV3[index + 1], progress[i] - index);
            }
      }
      
      /// <summary>
      /// 点击抽奖
      /// </summary>
      void DrawFun()
      {
            isAutoStop = false;
            isStopUpdatePos = false;
            StartCoroutine(SetMoveSpeed(2));
            // DoTween 按钮下拉动画
            // Transform tran = DrowBtn.transform;
            //tran.DOLocalMoveY(-60, 0.2f).OnComplete(() =>
            //{
            //      tran.DOLocalMoveY(50, 0.2f);
            //
            //});
      }
      
      // 抽奖动画速度控制
      IEnumerator SetMoveSpeed(int time)
      {
            AniMoveSpeed = 10;
            yield return new WaitForSeconds(time);
            AniMoveSpeed = 1;
            yield return new WaitForSeconds(time);
            isAutoStop = true;
      }
}

到此这篇关于Unity实现老虎机滚动抽奖效果的示例代码的文章就介绍到这了,更多相关Unity老虎机滚动抽奖内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://czhenya.blog.csdn.net/article/details/112385514

延伸 · 阅读

精彩推荐
  • C#如何用C#在PC上查找连接蓝牙设备并实现数据传输

    如何用C#在PC上查找连接蓝牙设备并实现数据传输

    这篇文章主要介绍了如何用C#在PC上查找连接蓝牙设备并实现数据传输,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下...

    UP技术控8742022-11-07
  • C#基于C#调用OCX控件的常用方法(推荐)

    基于C#调用OCX控件的常用方法(推荐)

    下面小编就为大家分享一篇基于C#调用OCX控件的常用方法推荐,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    愣愣OMG5612022-02-15
  • C#C#使用XmlDocument或XDocument创建xml文件

    C#使用XmlDocument或XDocument创建xml文件

    这篇文章主要为大家详细介绍了C#使用XmlDocument或XDocument创建xml文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    在代码的世界里游走12162022-03-02
  • C#Unity 实现给物体替换材质球

    Unity 实现给物体替换材质球

    这篇文章主要介绍了Unity 实现给物体替换材质球的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    unity_http3662022-11-12
  • C#C#中SQL Command的基本用法

    C#中SQL Command的基本用法

    今天小编就为大家分享一篇关于C#中SQL Command的基本用法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看...

    Czhenya7742022-03-03
  • C#SuperSocket封装成C#类库的步骤

    SuperSocket封装成C#类库的步骤

    这篇文章主要介绍了SuperSocket封装成C#类库的步骤,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...

    xhubobo3752022-10-26
  • C#C#(asp.net)多线程用法示例(可用于同时处理多个任务)

    C#(asp.net)多线程用法示例(可用于同时处理多个任务)

    这篇文章主要介绍了C#(asp.net)多线程Thread用法,可用于同时处理多个任务,以简单数学运算为例讲述了Thread类实现多线程的相关技巧,需要的朋友可以参考下...

    smartsmile20126652021-11-24
  • C#C#的四种基本数据类型

    C#的四种基本数据类型

    本文主要介绍了C#的四种基本数据类型的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧...

    辰星crystal7112021-12-28