Unity制作随机数字抽奖小案例
1. 搭建 UI 界面
- Panel
- Main(橙色背景图)
- Numbers (空对象,用来存储抽奖格子)
- 想要几位数的抽奖格子就创建几个Image,Image子对象只有Text,用来显示数字
- Button (Luck Draw 按钮, 这是开始抽奖的按钮)
- CountDown (倒计时文本)
- Res (抽奖结果文本)
- Numbers (空对象,用来存储抽奖格子)
- Main(橙色背景图)
2. 实现思路
2-1. 创建 RandomNumber 类 [挂载在每个抽奖格子(Numbers下面的Image)]
思路:
- 让每一个抽奖格子都加上这个脚本,每个格子都有自己的随机数。
- 声明一个 num 来接收随机数。
- 由于会用协程来每帧调用, 所以封装成一个方法方便调用。
- 方法内部:
a. 生成随机数
b.更改 Text 文本
- 方法内部:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class RandomNumber : MonoBehaviour
{
[HideInInspector]
public int num = 0;
[HideInInspector]
public Text currentText;
private void Awake()
{
currentText = GetComponent<Text>();
}
// 获取随机数并返回
public int GetRandomNumber()
{
num = Random.Range(0, 10);
currentText.text = num.ToString();
return num;
}
}
2-2. 创建 StartLuckDraw 类 (挂载在Main游戏对象)
思路:
- 获取全部带有 RandomNumber 的组件脚本。
- 开启协程用while(true)循环调用 yield return null 来达成Update的效果,每帧调用脚本里面的 GetRandomNumber 方法获取随机数。
- 创建一个字符串变量(str), 用for循环将每一个 随机数 添加到 字符串 里面。
- 最后结果用两个for循环生成大奖的结果来跟 str 对比, 结果一样就中大奖。