Unity制作一个简单抽卡系统(简单好抄)

业务流程:点击抽卡——>播放动画——>显示抽卡面板——>将随机结果添加到面板中——>关闭面板

1.准备素材并导入Unity中(包含2个抽卡动画,抽卡结果的图片,一个背景图片,一个你的展示图片)

2.给主摄像机添加2个视频播放组件,将画布的渲染模式改为摄像机并将摄像机拖到这里来(这一步非常重要,不然无法正常播放抽卡动画)

3.将抽卡动画拖到视频播放器组件的视频剪辑中,将渲染模式改为摄像机近平面,取消唤醒时播放

4.制作抽卡面板(展示面板),新建两个原始图像,将抽卡背景拖到纹理这里,同样的方法将展示用的图片也拖到另一个原始图像中(调整连个原始图像的大小),然后添加2个按钮

5.制作抽卡结果的画布(以10连为例)

第一步:新建一个面板并在颜色这里改变它的透明度和颜色改为你喜欢的颜色,并添加Grid Layout Group这个组件(这个组件能帮助我们快速实现格子类的布局)

第二步:在面板中添加10个原始图像,并修改面板中刚刚添加组件的属性(可以稍微修改一下,让他和你的抽卡结果的卡片适配,可以自己拖一张进去看看效果),这里如果遇到新建的原始图像没显示在面板中,不要慌,当你修改Grid Layout Group组件的值的时候他会自动帮你调好位置(我遇到的时候是这样的)。

第三步:用同样的方法制作单抽的面板(把面板命个名,方便后期查找)

第四步:隐藏两个面板

6.编写脚本(以10连为例)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;public class Choukabutton2 : MonoBehaviour
{public VideoPlayer chouka2;//视频播放组件public GameObject danchouplan2;//十连的面板public Texture2D[] tuxaigns;//这个是抽卡结果纹理集合public RawImage[] rawImages;//原始图像合集void Start(){chouka2.Stop();danchouplan2.SetActive(false);//影藏抽卡画布// 注册事件监听器chouka2.loopPointReached += OnVideoEnd;}public void click(){chouka2.Play();}private void OnVideoEnd(VideoPlayer source){// 停止视频播放chouka2.Stop();danchouplan2.SetActive(true);//显示抽卡结果for (int i = 0; i < 10; i++){rawImages[i] = rawImages[i].GetComponent<RawImage>();int w = Random.Range(0,4);//我这里有4中抽卡结果所以随机的是(0,1,2,3)这4个数,这个数字根据你的抽卡结果数自己更改。你也可以在这里添加保底机制什么的。rawImages[i].texture = tuxaigns[w];}}
}

7.先将脚本加到10连按钮上,然后点击加号给按钮绑定事件,将10连按钮拖到对象这个位置

8.给按钮选择点击事件

 

9.将素材1脚本中(这里步骤有点多,一步一步来)

第一步:将10连的动画拖进来(这里有个方法先将这个带脚本的组件锁定然后再点击主摄像机(刚刚添加视频播放组件的那个),然后打开它的属性面板将动画播放控制器拖进来)

第二步:将十连的面板拖到这里

第三步:将10连的画布上的原始图像和抽卡结果与脚本绑定(上面这个数添你抽卡结果种类的数量,下面就填10(因为这是10连))

第4步:将结果图片和原始图像拖到对应位置(别漏掉就行)

第五步:其实到可以就可以点击10连查看效果了(如果大小不合适可以再去调一下10连面板的大小)

10.用同样的方法给单抽制作点击事件(这里就不过多描述了,这里是单抽的脚本)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;public class Choukabutton1 : MonoBehaviour
{public VideoPlayer chouka;public  GameObject danchouplan;//单抽的面板public Texture2D[] tuxaigns;//纹理集合public RawImage rawImage;//原始图像void Start(){chouka.Stop();danchouplan.SetActive(false);//影藏抽卡画布// 注册事件监听器chouka.loopPointReached += OnVideoEnd;}public  void click() {chouka.Play();}private void OnVideoEnd(VideoPlayer source){// 停止视频播放chouka.Stop();danchouplan.SetActive(true);//显示抽卡结果int w = Random.Range(0, 5);//生成随机数rawImage.texture = tuxaigns[w];//更换纹理}
}

11. 新建一个脚本添加关闭面板功能(这里点击抽卡过后我们的画布会一直显示,所以这里给屏幕添加一个点击事件,如果抽卡结束后,当玩家点击屏幕的时候,就判断抽卡面板是否显示,如果显示就关闭它)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class Planclose : MonoBehaviour
{public GameObject choukaplan1;public GameObject choukaplan2;private void Update(){if (Input.GetMouseButton(0)){if (choukaplan1 != null && choukaplan1.activeSelf){choukaplan1.SetActive(false);}if (choukaplan2 != null && choukaplan2.activeSelf){choukaplan2.SetActive(false);}}}
}

将脚本挂到一个空对象上,并将10连和单抽的面板拖到这里来就可以了。 

 

到这里就全部结束了,这篇文章对你有帮助不要忘记点击关注哦!

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

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

相关文章

创建一个vue3+vite+ts项目

目录 创建项目 ​编辑 下载jsx 插件 在根目录在新建.env vue.config.js tsconfig.json tsconfig.node.json 下载ui组件库和路由&#xff08;组件库根据自己的项目需要选择&#xff09; 在根目录下新建views/index.tsx 在根目录下新建router/index.ts 修改App.vue 创建…

机器学习原理之 -- 朴素贝叶斯分类器:由来及原理详解

朴素贝叶斯&#xff08;Naive Bayes&#xff09;分类器是一类基于贝叶斯定理&#xff08;Bayes Theorem&#xff09;的简单而有效的概率分类算法。由于其假设特征之间的条件独立性&#xff0c;因此被称为“朴素”贝叶斯分类器。尽管这种独立性假设在现实中很少完全成立&#xf…

mac系统docker默认不支持host主机网络模式

环境描述&#xff1a;在mac系统上安装docker及docker-compose服务&#xff0c;并且打算搭建一个redis集群 问题描述&#xff1a;mac默认不支持host网络模式&#xff0c;导致集群无法通过外部主机访问 具体验证步骤&#xff1a; docker-compose.yml如下&#xff1a; version…

reactor网络模型的原理与实现

一、rector网络模型 对高并发编程&#xff0c;网络连接上的消息处理&#xff0c;可以分为两个阶段&#xff1a;等待消息准备好、消息处理。当使用默认的阻塞套接字时&#xff0c;往往是把这两个阶段合而为一&#xff0c;这样操作套接字的代码所在的线程就得睡眠来等待消息准备好…

Mysql常用SQL:日期转换成周_DAYOFWEEK(date)

有时候需要将查询出来的日期转换成周几&#xff0c;Mysql本身语法就是支持这种转换的&#xff0c;就是DAYOFWEEK()函数 语法格式&#xff1a;DAYOFWEEK(date) &#xff08;date&#xff1a;可以是指定的具体日期&#xff08; 如2024-06-29 &#xff09;&#xff0c;也可以是日期…

ubuntu中安装pycharm并设置图标

下载并解压 下载PyCharm&#xff1a;从JetBrains官网下载PyCharm的tar.gz文件。 地址&#xff1a;PyCharm&#xff1a;适用于数据科学和 Web 开发的 Python IDE (jetbrains.com) 解压文件&#xff1a;使用以下命令解压下载的文件&#xff1a; tar xvf pycharm-community-*.tar…

JAVA学习-练习试用Java实现“2 的幂”

问题&#xff1a; 给定一个整数 n&#xff0c;请判断该整数是否是 2 的幂次方。如果是&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 如果存在一个整数 x 使得 n 2x &#xff0c;则认为 n 是 2 的幂次方。 示例 1&#xff1a; 输入&#xff1a;n 1 输…

为什么word生成的PDF内容显示不全?

在现代办公环境中&#xff0c;将文档从一个格式转换为另一个格式是一个常见的任务。然而&#xff0c;有时候我们可能会遇到意想不到的问题&#xff0c;比如使用Word转换成PDF时&#xff0c;生成的PDF文件只显示了整个界面的四分之一内容。这种问题不仅令人困扰&#xff0c;也可…

重温react-05(类组件生命周期和性能优化)

类组件的生命周期 import React, { Component } from reactexport default class learnReact05 extends Component {state {number: 1}render() {return (<div>{this.state.number}</div>)}// 一般将请求的方法,放在这个生命周期componentDidMount() {setInterva…

斜率优化DP——AcWing 303. 运输小猫

斜率优化DP 定义 斜率优化DP&#xff08;Slope Optimization Dynamic Programming&#xff09;是一种高级动态规划技巧&#xff0c;用于优化具有特定形式的状态转移方程。它主要应用于那些状态转移涉及求极值&#xff08;如最小值或最大值&#xff09;的问题中&#xff0c;通…

CesiumJS【Basic】- #028 天空盒

文章目录 天空盒1 目标2 代码2.1 main.ts3 资源天空盒 1 目标 配置显示天空盒 2 代码 2.1 main.ts import * as Cesium from cesium;// 创建 Cesium Viewer 并配置地形数据和天空盒 const viewer = new Cesium.Viewer(

理解抽象工厂设计模式

目录 抽象工厂模式抽象工厂模式结构抽象工厂模式适合应用场景抽象工厂模式优缺点练手题目题目描述输入描述输出描述提示信息题解 抽象工厂模式 抽象工厂模式是一种创建型设计模式&#xff0c; 它能创建一系列相关的对象&#xff0c; 而无需指定其具体类。 抽象工厂模式结构 抽…

自定义一个MyBaits脱敏插件

自定义一个MyBaits脱敏插件 用于对查询结果中的敏感数据进行脱敏处理。这个插件将拦截ResultSetHandler对象的处理结果&#xff0c;对某些敏感字段进行脱敏。 插件实现步骤 创建脱敏插件类。注册插件。 1. 创建脱敏插件类 首先&#xff0c;我们创建一个自定义插件类 DataM…

《每天5分钟用Flask搭建一个管理系统》 第7章:用户认证

第7章&#xff1a;用户认证 7.1 用户认证的重要性 用户认证是确定用户身份的过程&#xff0c;它是任何需要用户登录的应用的关键部分。认证确保只有经过验证的用户才能访问受限资源。 7.2 Flask-Login扩展的使用 Flask-Login提供了用户会话管理的简单方法。它处理用户登录和…

AI在未来战争的应用

AI在未来战争中的应用将会非常广泛&#xff0c;其潜力巨大&#xff0c;可能会深刻改变战争的基本形态、作战方式和制胜机理。接下来介绍一些AI在未来战争中的可能应用&#xff0c;并基于最新科技新闻列出一些案例。 文章目录 Part1 战场感知与态势分析Part2 作战方案规划与决策…

深入理解策略梯度算法

策略梯度&#xff08;Policy Gradient&#xff09;算法是强化学习中的一种重要方法&#xff0c;通过优化策略以获得最大回报。本文将详细介绍策略梯度算法的基本原理&#xff0c;推导其数学公式&#xff0c;并提供具体的例子来指导其实现。 策略梯度算法的基本概念 在强化学习…

【Python3的内置函数和使用方法】

目录 Python 特点 Python 中文编码 Python 变量类型 Python列表 Python 元组 元组是另一个数据类型&#xff0c;类似于 List&#xff08;列表&#xff09; Python 字典 Python数据类型转换 Python 运算符 Python算术运算符 Python比较运算符 Python赋值运算符 Pyt…

(笔记)CentOS7上安装neovim

sudo yum install epel-release sudo yum install snapd sudo systemctl enable --now snapd.socket sudo ln -s /var/lib/snapd/snap /snap sudo snap install nvim --classic nvim ok&#xff0c;搞定 如果之前用yum安装了旧版本的neovim往下看&#xff08;之前没有安装…

一篇就够了,为你答疑解惑:锂电池一阶模型-离线参数辨识(附代码)

锂电池一阶模型-参数离线辨识 背景模型简介数据收集1. 最大可用容量实验2. 开路电压实验3. 混合动力脉冲特性实验离线辨识对应模型对应代码总结下期预告文章字数有点多,耐心不够的谨慎点击阅读。 下期继续讲解在线参数辨识方法。 背景 最近又在开始重新梳理锂电池建模仿真与S…

使用stat()函数的例子

代码&#xff1a; #include <sys/types.h> #include <sys/stat.h> #include <unistd.h> #include <stdio.h>int main(void) {struct stat st;if(-1stat("test.txt",&st)){printf("获得文件状态失败\n");return -1;}printf(&q…