Unity老虎机效果实现

news2024/9/22 21:18:58

实现效果如下:

实现效果为:外部传入数值,正常显示 老虎机抽取效果

用户可自定义行为:1,抽取的显示;2,抽取的最低时间

实现代码如下,可自行改写:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System;

/// <summary>
/// 老虎机
/// </summary>
public class SlotMachine : MonoBehaviour
{
    //private float startPosY;

    private int[] moveAdd = new int[3] { 0, 0, 0 };


    private bool[] playArray = new bool[3] { false, false, false };

    private int[] showArray = new int[3] { 0, 1, 2 };

    public float MinTime = 3f;
    private float minTime = 0f;

    private float moveFx = 0.2f;//移动系数,需要能被1整除:0.1;0.2;0.25;0.5
    private float moveLen;
    private int moveNum = 5;

    private Action callBackAc;    

    //public float UpdateSp = 0.05f;

    / <summary>
    / 传入类型
    / </summary>
    //public void Born()
    //{
     
    //    var _messT = transform.Find("1").GetChild(1);
    //    moveLen = _messT.GetComponent<RectTransform>().rect.height * moveFx;

    //    Debug.LogError(moveNum + "  " + moveLen + "   " + (1 / moveFx) + "   "/*+startPosY*/);

    //}

    public void ClickPlay(int _one, int _two, int _three,Action _callAc)
    {
        playArray[0] = true;
        playArray[1] = true;
        playArray[2] = true;
        showArray[0] = _one;
        showArray[1] = _two;
        showArray[2] = _three;
        minTime = MinTime + Time.time;
        callBackAc = null;
        callBackAc = _callAc;            
    }

    // Start is called before the first frame update
    void Start()
    {
        //Born();
        var _messT = transform.Find("1").GetChild(1);
        moveLen = _messT.GetComponent<RectTransform>().rect.height * moveFx;

    }

    //private float updateTime = 0f;

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.A)) ClickPlay(1, 2, 2,delegate { Debug.Log("打印"); });

        for (var _i = 0; _i < 3; _i++)
        {
            if (playArray[_i])
            {
                string _name = "";
                bool _isUpdate = UpdateDown(_i, out _name);
                if (Time.time > minTime && _isUpdate && _name == showArray[_i].ToString())
                {
                    switch (_i)
                    {
                        case 0: playArray[_i] = false; break;
                        case 1: if (!playArray[0]) playArray[_i] = false; break;
                        case 2: if (!playArray[1] && playArray[_i]) { playArray[_i] = false;/* Debug.LogError("执行");*/ callBackAc?.Invoke(); } break;
                    }
                    //Debug.Log(_name + " ~~~~~~~  " + _i);
                }
            }
        }
    }


    /// <summary>
    /// 模拟不断下落的过程
    /// </summary>
    private bool UpdateDown(int _i, out string _imageName)
    {
        var _tran = transform.Find(_i.ToString());
        _imageName = "";

        var _down = moveLen * Vector3.down;
        foreach (Transform idx in _tran)
            idx.GetComponent<RectTransform>().localPosition += _down;

        moveAdd[_i] += 1;
        //Debug.Log(moveAdd[_i] + "  " + moveNum);

        var _isR = moveAdd[_i] == moveNum;
        if (_isR)
        {
            _tran.GetChild(_tran.childCount - 1).SetSiblingIndex(0);         
            _imageName = _tran.GetChild(2).name;
            //Debug.Log(_i + "   " + _imageName);
        }
        _tran.GetComponent<ContentSizeFitter>().enabled = _isR;
        _tran.GetComponent<VerticalLayoutGroup>().enabled = _isR;
        if (_isR) moveAdd[_i] = 0;
        return _isR;
    }


}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/814950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Moebius数据库多活集群

背景 数据库是信息化的基石&#xff0c;支撑着整个业务系统&#xff0c;发挥着非常重要的作用&#xff0c;被喻为“IT的心脏”。因此&#xff0c;让数据库安全、稳定、高效地运行已经成为IT管理者必须要面对的问题。数据库在底层架构层面需要满足以下几点建设要求&#xff1a; …

虚拟机安装的问题

CentOS7报错: Host SMBus Controller not enabled! 1.在上图界面中直接输入root用户的密码登录到系统 2.输入命令&#xff0c;lsmod | grep i2c 3.输入命令&#xff0c;vi /etc/modprobe.d/blacklist.conf 创建黑名单&#xff0c;添加以下内容&#xff1a; blacklist i2c_piix…

851. 喧闹和富有;1765. 地图中的最高点;1171. 从链表中删去总和值为零的连续节点

851. 喧闹和富有 核心思想&#xff1a;这题的题意是找到比b有钱的人且这个人是最安静的人。简单的想法就是找出统计出所有b的有钱人&#xff0c;然后给有钱人的安静值排个序即可。给安静值排序这个我们可以进行优化一下&#xff0c;按照常规思路&#xff0c;我们统计出a的儿子…

Day02-作业(JavaScriptVue)

作业1&#xff1a;实现5秒之后&#xff0c;当前页面直接跳转到官网首页&#xff08;首页地址&#xff1a;https://www.itcast.cn&#xff09; 提示&#xff1a; 5秒之后&#xff0c;才触发某一个动作 素材&#xff1a; <!DOCTYPE html> <html lang"en"&…

【二叉树进阶】搜索二叉树的性能分析及其应用

文章目录 前言1. 二叉搜索树的性能分析2. 二叉搜索树的应用2.1 K模型2.2 KV模型英汉互译统计次数 3. 源码展示3.1 KV结构改造3.2 测试 前言 上一篇文章我们学习了搜索二叉树的实现&#xff0c;这篇文章我们来对搜索二叉树进行一个性能分析&#xff0c;并来讲解一下它的应用。 1…

OpenCV4.3 Java 编程入门:透明度与抠图

1. 基础知识 JPG 格式图片有损压缩和不支持半透明&#xff0c;如果想在图片上添加透明通道&#xff0c;一定不要用 JPG 格式的图片&#xff1b;PNG&#xff1a;既支持3通道RGB图像&#xff0c;也支持4通道RGBA图像&#xff08;红色、绿色、蓝色和透明度&#xff09;&#xff1…

一篇文章帮你弄懂邻接矩阵,邻接表和链式前向星的区别

前言&#xff1a; 在学C的时候&#xff0c;面对各种各样的存图方式&#xff0c;脑子都大了不少&#xff0c;各种算法还在向我冲来&#xff0c;结果一个邻接矩阵/邻接表/链表轻松给了我一下暴击就直接让我KO了&#xff0c;趁着脑子还算清楚&#xff0c;详细的介绍下这三种存图方…

探索工程机械远程控制新纪元:Intewell-Hyper II震撼发布!

在当前的工程技术领域&#xff0c;远程控制技术以其卓越的效率和方便性&#xff0c;正受到越来越多的关注和运用。而在这个过程中&#xff0c;某机械集团以Intewell-HyperII操作系统为基础&#xff0c;打造出了具有前瞻性的工程机械远程控制器&#xff0c;为行业的发展提供了新…

树莓派-搭建wireguard服务

一、简介 官网&#xff1a;https://www.wireguard.com/ WireGuard is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be faster, simpler, leaner, and more useful than IPsec, while avoiding the massive headac…

SpringBoot原理分析 | 安全框架:Shiro

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Shiro Shiro是一个安全框架&#xff0c;用于认证、授权和管理应用程序的安全性。它提供了一组易于使用的API和工具&#xff0c;可以帮助您轻松地添加安全性到您的应用…

apple pencil到底值不值得买?好用的iPad电容笔

随着ipad平板型号版本的不断更新&#xff0c;其的功能越来越多&#xff0c;现在它的性能已经可以和笔记本电脑相媲美了。而现在&#xff0c;随着技术的进步&#xff0c;IPAD已经不再是单纯的娱乐&#xff0c;而是一种功能强大的学习、绘画、工作等等。要增加生产效率&#xff0…

按键消抖(有/无状态机)

一&#xff0c;理论概念 按键抖动 按键抖动&#xff1a;按键抖动通常的按键所用开关为机械弹性开关&#xff0c;当机械触点断开、闭合时&#xff0c;由于机械触点的弹性作用&#xff0c;一个按键开关在闭合时不会马上稳定地接通&#xff0c;在断开时也不会一下子断开。因而在闭…

<MyBatis>MyBatis把空字符串转换成了0的问题处理方案

先看问题: Postman入参: MyBatis采用map循环插入: // Mapper接口层void addPar(Param(value "question") Map<String, Object> paramMap);<!-- 新增&#xff1a;参数 --><insert id"addPar" parameterType"map">INSERT IGNO…

高忆管理:集合竞价可以卖股票吗?

集合竞价是证券买卖所开盘前的一种买卖方式&#xff0c;其意图是为了在买卖所开盘之前构成有用的商场价格。因为商场处于初始状况&#xff0c;买卖量较小&#xff0c;因而集合竞价价格或许与买卖日中的实践买卖价格有所不同。那么&#xff0c;集合竞价是否能够卖股票呢&#xf…

Python3,1行代码,批量把图片转换成PDF文档,女神终于同意跟我吃夜宵了。

批量图片转换成PDF文档 1、引言2、代码示例2.1 安装2.2 单张转换2.3 批量转换 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 求助&#xff0c;求助。 小鱼&#xff1a;有啥事&#xff0c;这大惊小怪的。 小屌丝&#xff1a;我女神跟我说&#xff0c; 如果我把她的照片…

Spark 5:Spark Core 内核调度

DAG Spark的核心是根据RDD来实现的&#xff0c;Spark Scheduler则为Spark核心实现的重要一环&#xff0c;其作用就是任务调度。Spark的任务调度就是如何组织任务去处理RDD中每个分区的数据&#xff0c;根据RDD的依赖关系构建DAG&#xff0c;基于DAG划分Stage&#xff0c;将每个…

跨境电商ERP源码选型指南,如何找到最适合你的?

在跨境电商行业&#xff0c;一个高效的ERP系统是保证业务顺利进行和管理的关键。选择适合自己的跨境电商ERP源码至关重要。本指南将帮助你了解如何找到最适合你的跨境电商ERP源码。 跨境电商ERP源码的重要性 跨境电商ERP源码在现代电商营运中起着至关重要的作用。它提供了一套…

音频开发-小程序和H5

微信录音 1、引入sdk 2、录音操作 浏览器录音 参考文献&#xff1a;前端H5实现调用麦克风&#xff0c;录音功能_h5 录音_Darker丨峰神的博客-CSDN博客 function record() { window.navigator.mediaDevices.getUserMedia({ audio: { sampleRate: 44100, // 采样率 channelCount…

游戏APP开发:创新设计的秘诀

在游戏 APP开发中&#xff0c;创新设计是游戏开发公司的一大追求&#xff0c;为了可以为用户带来更好的游戏体验&#xff0c;这就需要对游戏 APP开发进行创新设计。那么&#xff0c;游戏 APP开发中的创新设计是什么呢&#xff1f;接下来&#xff0c;我们就一起来看看吧。 想要…

一起学算法(递推篇)

前言&#xff1a;递推最通俗的理解就是数列&#xff0c;递推和数列的关系就好比算法和数据结构的关系&#xff0c;数列有点像数据结构中的顺序表&#xff0c;而递推就是一个循环或者迭代的过程的枚举过程 1.斐波那契数列 斐波那契数形成的序列称为斐波那契数列&#xff0c;该…