首先,感谢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月也有机会给大家抽取粉丝福利!
Logo

分享前沿Unity技术干货和开发经验,精彩的Unity活动和社区相关信息

更多推荐