首先,感谢3月份在Unity.cn和Connect App上面支持我的小伙伴,粉丝福利已经在2020年4月10日以B站直播方式抽取完毕,获奖的小伙伴请尽快在B站联系我哦!获奖名单在文章最后
既然大家都是学习Unity的,抽奖自然不会用任何其他平台和工具了!(硬撑) 所以简单做了一个抽奖系统,虽然有很多不足,不过娱乐性和实用性还是可以的,这里分享给大家代码和项目,效果如下:
这个项目完全只使用到了UI的组件,代码也只精简的写了一个,所以集合了很多方法也包括了用二进制生成TXT保存文件确保抽奖结果不会因为软件问题而丢失。

代码只挂在了Controller上,所有的按钮也都调用这个代码里的函数方法。
上代码:
public enum Gift { 背包, 鼠标垫, 马克杯, 数据线, 丝巾, T恤 }
private Gift gift;
public Text nameText; //循环显示的名字
public Text countNum; //显示列表当中当前剩余人数
public Text awardText; //获奖名单
public TextAsset textFile;//用一个TXT来保存参与抽奖的名字,每个名字一行
public bool isClick;
List<string> textLine = new List<string>();
public void Start()
{
awardText.text = null;
var tempLineData = textFile.text.Split('\n');
foreach (var line in tempLineData)
{
textLine.Add(line);
}
countNum.text = textLine.Count.ToString();
}
public void Update()
{
if (isClick) //如果按键按下则开始执行随机名字显示
{
int index = Random.Range(0, textLine.Count);
nameText.text = textLine[index];
}
}
public void ButtonClicked()
{
isClick = !isClick;
}
public void ConfirmButton()
{
textLine.Remove(nameText.text);
countNum.text = textLine.Count.ToString();
awardText.text += nameText.text + " 获得: " + gift + '\n';
SaveData();
}
public void SaveData() //确保每次按下确认按键后保存抽奖结果
{
if (!Directory.Exists(Application.persistentDataPath + "/March"))
{
Directory.CreateDirectory(Application.persistentDataPath + "/March");
}
BinaryFormatter formatter = new BinaryFormatter();
FileStream file = File.Create(Application.persistentDataPath + "/March/Award.txt");
formatter.Serialize(file, awardText.text);
file.Close();
}
#region Gift Button //每一个奖品的按钮都调用这里的方法
public void Gift1()
{
gift = Gift.背包;
}
public void Gift2()
{
gift = Gift.鼠标垫;
}
public void Gift3()
{
gift = Gift.T恤;
}
public void Gift4()
{
gift = Gift.马克杯;
}
public void Gift5()
{
gift = Gift.丝巾;
}
public void Gift6()
{
gift = Gift.数据线;
}
#endregion
}
- 小技巧分享给大家
由于奖品类别也是按键UI组件,但是每次点选一个物品后如果再次点选其他按钮则会使‘选中’效果消失,所以这里在按键的 Event 里,除了调用了Gift切换的方法以外,也直接触发了改变Alpha值得为0.5,达到永久变暗来区分是否按下。

如果你也希望跟朋友玩一下抽奖,或者聚会的时候你做一个自己的抽取游戏,相信一定会很有意思呢!
获奖名单如下:

再次感谢大家支持,希望4月也有机会给大家抽取粉丝福利!
本文分享了一款使用Unity开发的抽奖系统代码,该系统仅使用UI组件,代码精简,包含循环显示名字、显示剩余人数等功能,并介绍了如何通过二进制生成TXT文件保存抽奖结果。
5338

被折叠的 条评论
为什么被折叠?



