zoukankan      html  css  js  c++  java
  • 极致21点开发DAY3

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

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

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

      1 using System;
      2 using System.Collections.Generic;
      3 using UnityEngine;
      4 using UnityEngine.UI;
      5 
      6 
      7 public class ActionController : MonoBehaviour
      8 {
      9     public Button closeBtn;
     10     public Button recvBtn;
     11     public Sprite[] goldSprite = new Sprite[7];
     12     public Sprite recvSprite;
     13 
     14     public Transform parent;
     15     private List<GameObject> itemList = new List<GameObject>();    
     16     //今天点击日期
     17     private string currentClickDate = "";
     18     //上一次点击日期
     19     private string lastClickDate = "";
     20     private int dateFlag = 0;
     21     private void Start()
     22     {
     23         // PlayerPrefs.DeleteAll();
     24         Init();
     25         currentClickDate = DateTime.Today.ToLongDateString();
     26         lastClickDate = PlayerPrefs.GetString("LastClickDate");
     27         LoadActionItems();
     28 
     29     }
     30 
     31     private void Init()
     32     {
     33 
     34         closeBtn.onClick.AddListener(OnCloseBtn);
     35         recvBtn.onClick.AddListener(OnRecvBtn);
     36 
     37     }
     38 
     39     private void OnCloseBtn()
     40     {
     41         gameObject.SetActive(false);
     42     }
     43     //如果上一次点击日期和今天日期不同,并且今天还没有点击,则更新UI。
     44     private void OnRecvBtn()
     45     {
     46 
     47         //从来没有点击过
     48         if (string.IsNullOrEmpty(lastClickDate))
     49         {
     50             dateFlag = 1;
     51 
     52         }
     53         else
     54         {
     55             ++dateFlag;
     56             dateFlag %= 7;
     57         }
     58         PlayerPrefs.SetInt("DateFlag", dateFlag);
     59         //不是今天第一次点击,则什么都不做
     60         if (lastClickDate.Equals(currentClickDate))
     61         {
     62             Debug.Log("今天的金币已领取");
     63             return;
     64         }
     65         else
     66         {
     67 
     68             lastClickDate = currentClickDate;
     69             PlayerPrefs.SetString("LastClickDate", lastClickDate);
     70             itemList[dateFlag - 1].transform.GetChild(2).gameObject.SetActive(true);
     71         }
     72     }
     73     private void LoadActionItems()
     74     {
     75 
     76         ActionData temp = new ActionData();
     77         for (int i = 0; i < 7; i++)
     78         {
     79             //加载资源
     80             UnityEngine.Object obj = Resources.Load("Prefabs/actionitem");
     81             GameObject go = Instantiate(obj) as GameObject;
     82             itemList.Add(go);
     83             //初始化资源
     84             go.transform.SetParent(parent);
     85             go.transform.localPosition = new Vector3(0, 0, 0);
     86             go.transform.localScale = new Vector3(1, 1, 1);
     87 
     88             temp.day = "" + (i + 1) + "";
     89             temp.goldNum = (i + 1).ToString();
     90             temp.goldSprite = goldSprite[i];
     91             temp.receiveSprite = recvSprite;
     92 
     93             go.GetComponent<ActionItem>().SetActionItem(temp);
     94         }
     95         //加载完资源时,更新UI
     96         if (lastClickDate.Equals(currentClickDate))
     97         {
     98             itemList[dateFlag].transform.GetChild(2).gameObject.SetActive(true);
     99         }
    100     }
    101 }

    效果图:

  • 相关阅读:
    android 手把手教您自定义ViewGroup(一)
    mac下tomcat的安装与配置
    jarsigner签名报错Invalid keystore format
    android上引入七牛 上传图片或者文件 最终整理版本(可用)
    viewpage listview gridview加载本地大图多图OOM处理办法
    android TextView 文字垂直的设置
    javascript技巧之实现add方法无限调用
    jQuery源码分析之ready方法
    jQuery源码分析之Callbacks方法
    jQuery源码分析之extend方法
  • 原文地址:https://www.cnblogs.com/blackteeth/p/10209201.html
Copyright © 2011-2022 走看看