100个 Unity小游戏系列三 -Unity 抽奖游戏专题二 水果机游戏

一、演示效果

二、知识点

2.1 布局

 private void CreateItems(){for (int i = 0; i < rewardDatas.Length; i++){var reward_data = rewardDatas[i];GameObject fruitOjb;if (i < itemRoot.childCount){fruitOjb = itemRoot.GetChild(i).gameObject;}else{fruitOjb = Instantiate(itemRoot.GetChild(0).gameObject, itemRoot);}fruitOjb.SetActive(true);var fruitImg = fruitOjb.transform.Find("Icon").GetComponent<Image>();fruitImg.sprite = itemImgs[reward_data.type - 1];fruitImg.SetNativeSize();fruitImg.transform.localScale = Vector3.one * itemSize;var amountTxt = fruitOjb.GetComponentInChildren<TextMeshProUGUI>();amountTxt.text = string.Format("{0}", reward_data.amount);fruitOjb.transform.localScale = Vector3.one * itemSize;cursorLists.Add(fruitOjb.transform.Find("Cursor").gameObject);selectLists.Add(fruitOjb.transform.Find("Select").gameObject);}}

2.2 转动逻辑

private IEnumerator StartSpin(Action<List<RewardData>> onSpinCompleted){IsRolling = true;ChangeSelectEanble(0, true);ChangeCursorEanble(0, true);GetSelectIndex();int[] rewardIdLists = LuckyManager.Instance.CalculateRewardId(rewardDatas, GetRewardCount());int spinCount = rewardIdLists.Length;List<RewardData> rewardDataList = new List<RewardData>();if (rollStyle3){yield return StaraThreeSpine();}for (int i = 0; i < rewardIdLists.Length; i++){var rewardDt = LuckyManager.Instance.GetDataById(rewardDatas, rewardIdLists[i], out int rewardIndex);if (rewardDt == null){Debug.LogErrorFormat("水果机表中不存在id:{0}", rewardIdLists[i]);continue;}int totalLen = itemCount * 3 + rewardIndex;if (rollStyle3 || rollStyle2)totalLen = itemCount * 3 - i + rewardIndex;int curIndex = startIndexs;float spinTime = totalLen * 0.06f;var moveAct = DOTween.To(() => curIndex, (x) => curIndex = x, totalLen, spinTime);moveAct.SetEase(Ease.Linear);moveAct.onUpdate = () =>{int fixNum = curIndex % itemCount;startIndexs = fixNum;ChangeCursorEanble(fixNum);};moveAct.OnComplete(() =>{rewardDataList.Add(rewardDt);ChangeSelectEanble(rewardIndex);if (--spinCount <= 0){IsRolling = false;onSpinCompleted?.Invoke(rewardDataList);}});if (rollStyle3 || rollStyle2)yield return new WaitForSeconds(spinTime);}}

四 、代码链接

https://github.com/lixianjun0903/luckydraw-master.git

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

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

相关文章

数据中台建设方案(Word版源文档)

建设大数据管理中台&#xff0c;按照统一的数据规范和标准体系&#xff0c;构建统一数据采集&#xfe63;治理&#xfe63;共享标准、统一技术开发体系、统一接口 API &#xff0c;实现数据采集、平台治理&#xff0c;业务应用三层解耦&#xff0c;并按照统一标准格式提供高效的…

最新!!2024年上半年软考【中级软件设计师】综合知识真题解析

2024上半年软考考试已经结束了&#xff0c;为大家整理了网友回忆版的软件设计师真题及答案&#xff0c;总共30道题。 上半年考试的宝子们可以对答案预估分数&#xff01;准备下半年考的宝子可以提前把握考试知识点和出题方向&#xff0c;说不定会遇到相同考点的题目&#xff01…

[集群聊天服务器]----(十)Nginx的tcp负载均衡配置--附带截图

接着上文&#xff0c;我们剖析了服务端和客户端的代码&#xff0c;但是单台服务器的并发量是有限的&#xff0c;面对并发量的要求&#xff0c;我们就需要引入Nginx来实现并发量的要求&#xff0c;将用户请求分发到不同的服务器上分担压力&#xff0c;这就是负载均衡。 选择负…

汽车制造业安全有效的设计图纸文件外发系统是什么样的?

在汽车制造的世界里&#xff0c;那些设计图不仅仅是公司智慧的闪光点&#xff0c;更是它们竞争的秘密武器。但问题来了&#xff0c;当公司需要和供应商、合作伙伴频繁交换数据时&#xff0c;怎样安全又高效地发送这些设计图&#xff0c;就成了一个头疼的问题。这篇文章会深挖一…

python常用镜像

#1. 阿里云镜像&#xff1a;https://mirrors.aliyun.com/pypi/simple/ #2. 清华大学镜像&#xff1a;https://pypi.tuna.tsinghua.edu.cn/simple #3. 豆瓣镜像&#xff1a;https://pypi.doubanio.com/simple/ #4. 中科大镜像&#xff1a;https://pypi.mirrors.ustc.edu.cn/simp…

计算机网络——在地址栏输入网址(URL)之后都发生了什么

网址&#xff0c;也叫域名&#xff0c;域名就像一个 IP 地址的可读版本&#xff0c;比如&#xff0c;百度的域名 www.baidu.com&#xff0c;他的 ip 是 110.242.68.3&#xff0c;输入 IP 一样可以跳转到百度搜索的页面&#xff0c;我想没有一个人没去记百度的 IP 吧。其实我们真…

部署Prometheus + Grafana实现监控数据指标

1.1 Prometheus安装部署 Prometheus监控服务 主机名IP地址系统配置作用Prometheus192.168.110.27/24CentOS 7.94颗CPU 8G内存 100G硬盘Prometheus服务器grafana192.168.110.28/24CentOS 7.94颗CPU 8G内存 100G硬盘grafana服务器 监控机器 主机名IP地址系统配置k8s-master-0…

符合车规级漏电流检测的磁通门传感器KTD1100

电动车充电桩 在政策出台后&#xff0c;充电桩类产品按要求需装配B端漏电流检测装置。它可以有效防止充电桩等设备中的漏电流对用户造成危害&#xff0c;保障用户的用电安全。其次&#xff0c;它可以促进充电桩等产品的质量提升&#xff0c;提高市场的公平竞争&#xff0c;让消…

无线领夹麦克风哪个品牌好?本期文章揭秘无线麦克风哪个品牌好用

​在当下这个全民皆为媒体的时代大潮中&#xff0c;视频分享已然成为了引领风尚的指向标。在自媒体领域竞争愈发激烈的态势下&#xff0c;若要在这片广阔海洋中扬帆远航&#xff0c;优秀的作品毫无疑问是吸引观众的关键所在。而想要塑造出这样的卓越之作&#xff0c;除了需要创…

npm 版本号指定标识符

关于依赖的版本 我们可以先来了解依赖的版本 {"dependencies": {"nestjs/common": "^10.0.0","nestjs/core": "^10.0.0",} } 比如我们常见的依赖版本一般长这样&#xff0c;它一般由三部分组成&#xff1a;major.minor.p…

代谢组数据分析六:基于报告分数的功能分析

代谢组数据分析六:基于报告分数的功能分析 受经典“RSA”方法的启发,我们开发了改进的“基于广义报告者得分的分析(GRSA)”方法,并将其实现在R包“ReporterScore”中,同时配套了全面的可视化方法和通路数据库。“GRSA”是一种无需阈值的方法,适用于所有类型的生物医学特…

unity生命值有时候不会减少,即使明显被击中

碰撞检测不一致&#xff1a; 确保所有敌人对象都有正确设置的标签&#xff08;Tag&#xff09;&#xff0c;并且这个标签是在 OnCollisionEnter 中检查的 "Enemy"。此外&#xff0c;检查敌人和直升机的碰撞器&#xff08;Collider&#xff09;设置是否正确&#xff0…

K8s 小白入门|从电影配乐谈起,聊聊容器编排和 K8s

来听听音乐 电影&#xff0c;是我们生活中的重要调味剂。 配乐&#xff0c;是电影中不可或缺的一部分。 有的时候&#xff0c;配乐可以跟剧情共振&#xff0c;让你按捺不住自己的情绪&#xff0c;或眼含热泪、或慷慨激昂、或人仰马翻、或怅然若失&#xff1b; 有的时候&…

偏微分方程算法之抛物型方程差分格式编程示例一

目录 一、研究问题 二、C++代码 三、结果分析 一、研究问题 从本节开始将对具体的抛物型偏微分问题算例进行C++编程,以加深对抛物型偏微分方程差分格式构造的理解和应用。 采用向前欧拉格式计算抛物型方程初边值问题:

WebGL技术在教育培训中的应用

WebGL技术在教育培训中的应用非常广泛&#xff0c;通过其强大的三维图形处理能力&#xff0c;能够为教育培训提供更加生动、互动和沉浸式的学习体验。以下是WebGL在教育培训中的几个主要应用及其具体实现。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xf…

想用Python做OCR?看看这篇文章

OCR是Optical Character Recognition的缩写&#xff0c;中文名为光学字符识别。它是一种通过计算机技术对图像或扫描文档中的文字进行识别和理解的过程。OCR技术可以将图像中的文字转换为可编辑、可搜索的文本&#xff0c;使得计算机能够理解和处理这些文字信息。 OCR技术通常…

解锁数据的力量:Navicat 17 新特性和亮点

解锁数据的力量&#xff1a;Navicat 17 新特性和亮点 大家好&#xff0c;我是猫头虎。今天我要为大家介绍 Navicat 17 的新特性和亮点。Navicat 是一款专业的数据库管理工具&#xff0c;支持多种数据库类型&#xff0c;包括 MySQL、Oracle、SQL Server、PostgreSQL、MariaDB、…

C++流行编译器的基础认识

有哪些主流的C编译器&#xff1f; C有许多流行的编译器&#xff0c;每个编译器都有其独特的特点和用途。以下是一些流行的C编译器&#xff1a; GNU Compiler Collection (GCC): GCC是一个开源的编译器套件&#xff0c;支持多种编程语言&#xff0c;包括C和C。它是一个功能强大…

【量算分析工具-概述】GeoServer改造Springboot番外系列三

【量算分析工具-概述】GeoServer改造Springboot番外系列三-CSDN博客 【量算分析工具-水平距离】GeoServer改造Springboot番外系列四-CSDN博客 【量算分析工具-水平面积】GeoServer改造Springboot番外系列五-CSDN博客 【量算分析工具-方位角】GeoServer改造Springboot番外系列…

php正则中的i,m,s,x,e分别表示什么

正则表达式模式修饰符&#xff08;也称为标志或模式修饰符&#xff09;用于改变正则表达式的行为。这些修饰符可以附加在正则表达式的定界符之后&#xff0c;通常为正斜杠&#xff08;/&#xff09;或井号&#xff08;#&#xff09;&#xff0c;以改变搜索或替换的方式。 1、i…