用Unity做一个抽奖系统(娱乐)
首先,感谢3月份在Unity.cn和Connect App上面支持我的小伙伴,粉丝福利已经在2020年4月10日以B站直播方式抽取完毕,获奖的小伙伴请尽快在B站联系我哦!获奖名单在文章最后既然大家都是学习Unity的,抽奖自然不会用任何其他平台和工具了!(硬撑) 所以简单做了一个抽奖系统,虽然有很多不足,不过娱乐性和实用性还是可以的,这里分享给大家代码和项目,效果如下:这个项目完全只使用到了UI的
·
首先,感谢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月也有机会给大家抽取粉丝福利!
更多推荐
所有评论(0)