Unity 之 模拟王者荣耀七日签到系统
发布日期:2021-06-29 19:10:22 浏览次数:2 分类:技术文章

本文共 9159 字,大约阅读时间需要 30 分钟。

Unity 之 模拟王者荣耀七日签到系统

一,效果图

不带补签版本:

1.2


二,制作思路

使用切换图片背景颜色的方式,进行状态转换【灰色:已签到;蓝色:可签到;白色:未签到】

主要逻辑:

  • 每次签到时保存一个签到日期,用于判断今日是否签到;
  • 根据是否已签到显示UI界面,提示信息等;
  • 未签到时,点击按钮,进行签到(保存签到日期,发放奖励,维护UI显示等);
  • 另外,还需要进行新的一周签到开始的逻辑重置;

上述逻辑,基本上模拟了王者荣耀的签到面板功能了,下面我们开始实现吧。


三,场景搭建

3.1

Demo场景搭建如上图:(没有资源有点丑~)

  1. 制作一个签到按钮(一个Image,下面放了一个Image和一个Text)
  2. 复制六份(单独创建一个空物体,作为它们的父物体)
  3. 创建一个文本(随便放在哪里,显示提示信息用的)

四,代码实现

就是按上面说的实现的逻辑,代码中注释也写的很详细了,全部代码如下:

using System;using UnityEngine;using UnityEngine.UI;public class SingInDemo : MonoBehaviour{
// 签到按钮的父物体 public Transform WeekParent; // 提示文字 public Text HintText; // 上次签到时间 -- 和今天时间对比,确定是否今日已签到 private readonly string prefsLastCheckTime = "prefsLastCheckTime"; // 本周已签到几天 例:2 --> 表示周一,周二已签到 private readonly string prefsWeekAlreadyDay = "prefsWeekAlreadyDay"; // 今天周几 private int weekToday; // 本周签到了几天 private int alreadyDay; void Start() {
//PlayerPrefs.DeleteAll(); weekToday = GetDateWeek(DateTime.Now.ToString()); AlreadyByWeek(); // 查看本周签到了几天了 alreadyDay = PlayerPrefs.GetInt(prefsWeekAlreadyDay); for (int i = 0; i < WeekParent.childCount; i++) {
GameObject go = WeekParent.GetChild(i).gameObject; // 监听按钮点击 go.GetComponent

五,拓展补签版本

顺着上面的实现思路,很容易就是可以实现一个带补签的版本:

看下效果图:

1.2
其实就是把上面代码校验今天是否已签到的地方修改为是否可补签,然后添加一个补签逻辑就可以了。

场景搭建还是和上面一样,代码实现如下:

using System;using UnityEngine;using UnityEngine.UI;public class SingInDemo : MonoBehaviour{
// 签到按钮的父物体 public Transform WeekParent; // 提示文字 public Text HintText; // 上次签到时间 -- 和今天时间对比,确定是否今日已签到 private readonly string prefsLastCheckTime = "prefsLastCheckTime"; // 本周已签到几天 例:2 --> 表示周一,周二已签到 private readonly string prefsWeekAlreadyDay = "prefsWeekAlreadyDay"; // 今天周几 private int weekToday; // 本周签到了几天 private int alreadyDay; void Start() {
//PlayerPrefs.DeleteAll(); weekToday = GetDateWeek(DateTime.Now.ToString()); AlreadyByWeek(); // 查看本周签到了几天了 alreadyDay = PlayerPrefs.GetInt(prefsWeekAlreadyDay); for (int i = 0; i < WeekParent.childCount; i++) {
GameObject go = WeekParent.GetChild(i).gameObject; // 监听按钮点击 go.GetComponent

若还有不明白的地方,可以评论咨询,或者点击链接查看示例源码:


转载地址:https://czhenya.blog.csdn.net/article/details/115740022 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Unity 之 关于停止协程的五种方式解析
下一篇:Unity 之 三种抽奖示例(跑马灯,转盘,老虎机实例 文中源码)

发表评论

最新留言

不错!
[***.144.177.141]2024年04月10日 18时21分49秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章