今天完成的主要任务是活动窗口的显示与关闭,以及领取金币的逻辑。用到了数据持久化技术。我想记录的主要是领取金币的逻辑。

领取金币算法:如果今天没有领取金币,即可领取,否则什么都不做。

一句话描述足矣,但实现起来并不是那么简单。涉及到保存是否领金币状态,以及第几次领取金币。还是用代码说话吧:

 using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; public class ActionController : MonoBehaviour
{
public Button closeBtn;
public Button recvBtn;
public Sprite[] goldSprite = new Sprite[];
public Sprite recvSprite; public Transform parent;
private List<GameObject> itemList = new List<GameObject>();
//今天点击日期
private string currentClickDate = "";
//上一次点击日期
private string lastClickDate = "";
private int dateFlag = ;
private void Start()
{
// PlayerPrefs.DeleteAll();
Init();
currentClickDate = DateTime.Today.ToLongDateString();
lastClickDate = PlayerPrefs.GetString("LastClickDate");
LoadActionItems(); } private void Init()
{ closeBtn.onClick.AddListener(OnCloseBtn);
recvBtn.onClick.AddListener(OnRecvBtn); } private void OnCloseBtn()
{
gameObject.SetActive(false);
}
//如果上一次点击日期和今天日期不同,并且今天还没有点击,则更新UI。
private void OnRecvBtn()
{ //从来没有点击过
if (string.IsNullOrEmpty(lastClickDate))
{
dateFlag = ; }
else
{
++dateFlag;
dateFlag %= ;
}
PlayerPrefs.SetInt("DateFlag", dateFlag);
//不是今天第一次点击,则什么都不做
if (lastClickDate.Equals(currentClickDate))
{
Debug.Log("今天的金币已领取");
return;
}
else
{ lastClickDate = currentClickDate;
PlayerPrefs.SetString("LastClickDate", lastClickDate);
itemList[dateFlag - ].transform.GetChild().gameObject.SetActive(true);
}
}
private void LoadActionItems()
{ ActionData temp = new ActionData();
for (int i = ; i < ; i++)
{
//加载资源
UnityEngine.Object obj = Resources.Load("Prefabs/actionitem");
GameObject go = Instantiate(obj) as GameObject;
itemList.Add(go);
//初始化资源
go.transform.SetParent(parent);
go.transform.localPosition = new Vector3(, , );
go.transform.localScale = new Vector3(, , ); temp.day = "第" + (i + ) + "天";
temp.goldNum = (i + ).ToString();
temp.goldSprite = goldSprite[i];
temp.receiveSprite = recvSprite; go.GetComponent<ActionItem>().SetActionItem(temp);
}
//加载完资源时,更新UI
if (lastClickDate.Equals(currentClickDate))
{
itemList[dateFlag].transform.GetChild().gameObject.SetActive(true);
}
}
}

效果图:

极致21点开发DAY3的更多相关文章

  1. 极致21点开发DAY2

    今天完成的主要内容时MainScene场景中设置面板的开发.游戏逻辑:点击设置按钮,弹出音乐设置弹框,弹框内容包括音乐的打开与关闭,退出游戏. 点击退出游戏,弹出退出游戏确认面板.效果图: 1.首先在 ...

  2. 极致21点开发DAY1

    最近在学习UI框架,无奈没有完整的项目学习,四处搜索找了这款游戏源码,在Unity2018上完美运行.于是乎开始学习开发这款游戏.今天主要完成的任务时拼UI.搭建了3个场景, StartScene, ...

  3. 极致21点开发DAY4

    完成的内容:1.修改上一篇博文中的Bug  2.完成任务窗口逻辑 using System; using System.Collections.Generic; using UnityEngine; ...

  4. Sea.js提供简单、极致的模块化开发体验

    为什么使用 Sea.js ? Sea.js 追求简单.自然的代码书写和组织方式,具有以下核心特性: 简单友好的模块定义规范:Sea.js 遵循 CMD 规范,可以像 Node.js 一般书写模块代码. ...

  5. Python全栈开发day3

    1.Pycharm使用介绍 1.1 新建py文件自动添加python和编码 1.2 更改pycharm默认字体和风格 点击左上角“file”-->“Settings”(或者用“Ctrl+Alt+ ...

  6. python全栈开发-Day3 字符串

    python全栈开发-Day3 字符串 一.按照以下几个点展开字符串的学习  #一:基本使用 1. 用途 #首先字符串主要作用途径:名字,性别,国籍,地址等描述信息2.定义方式 在单引号\双引号\三引 ...

  7. 运维平台cmdb开发-day3

    后台管理 1. 访问过程 我们在前面2天得到了各个客户端的资产数据信息,我们将各个这个数据打包发送到api,这个api其实就是django的url传参,之后按照数据的格式对比数据库增删改 2. 后台页 ...

  8. 21:开发脚本管理服务端LVS案例

    [root@lb03 scripts]# cat lv_manager.sh #!/bin/bash #定义只能是root用户执行 ];then echo "permission deny ...

  9. 21 javaweb开发--bug调试技巧

    1.当修改代码后,测试时没有任何效果 解决方案:换个浏览器试试,可能是浏览器缓存的原因.

随机推荐

  1. 第九篇 蓝图 blueprint

    在Flask中的蓝图 blueprint 的作用就是将 功能 与 主服务 分开 比如说,你有一个客户管理系统,最开始的时候,只有一个查看客户列表的功能,后来你又加入了一个添加客户的功能(add_use ...

  2. 五一劳动节,讲讲NEO智能合约的调试

    之前我们说过NEO智能合约的调试问题,过去了一段时间,有很多东西都发生了比较大的变化.让我们重新再来探讨一下这个话题. 先说日期,2018年4月27日,马上迎来劳动节.   以后可能还会再次谈论这个话 ...

  3. S0.2 灰度图

    目录 灰度图定义 灰度图优点 RGB转灰度算法(OpenCV3) 量化 算法公式 OpenCV自带函数实现 综合比较 灰度图定义 对于单色(灰度)图像而言,每个像素的亮度用一个数值来表示,通常数值范围 ...

  4. react中constructor()和super()的具体含义以及如何使用

    1.constructor()---super( )的基本含义 constructor()--构造方法 这是ES6对类的默认方法,通过new命令生成对象实例时自动调用该方法.并且,该方法是类中必须有的 ...

  5. @ConfigurationProperties注解取消location属性

    当我正在自学如何自定义properties配置文件,为了防止不必要的麻烦,重新创建了一个新的properties文件 fu.properties 然后在自定义的配置类中引入fu.properties/ ...

  6. IOS不支持iframe的解决办法

    最近做ios的兼容,因为入口不同,需要把公共页面抽取出来,然后根据不同的值,传递给后台不同的入口.刚开始用iframe页面嵌套(第一次尝试使用),但发现iOS系统对iframe嵌套页面的高度和定位控制 ...

  7. java web 读取数据库数据写入Excel返回浏览器下载

    @RequestMapping(value = "/download", method = RequestMethod.GET) public void downstudents( ...

  8. Pycharm汉化

    简单的汉化方法:    需要把以下链接的文件放到Pycharm安装目录的lib目录下记得重启pycharm即可https://pan.baidu.com/s/1GG4zXZ_0xSB-AlDdu0Tu ...

  9. oracle学习笔记第一天

    oracle学习笔记第一天 --oracle学习的第一天 --一.几个基础的关键字   1.select select (挑选) 挑选出显示的--列--(可以多列,用“,”隔开,*表示所有列),为一条 ...

  10. Mac上配置GTK环境

    Mac上配置GTK环境 安装command line工具, 如果安装了Xcode, 就直接跳过该步骤 安装Homebrew 使用brew install pkg-config 使用brew insta ...