效果图:
时间:
时间:
创建GameData全局类用来存储缓存
cc.GAMEDATA= cc.GAMEDATA || {};
//记录签到缓存
cc.GAMEDATA.setqiandao= function(tig){
cc.sys.localStorage.setItem("setqiandaotig",tig)
}
//得到是否可以签到
cc.GAMEDATA.getqiandao= function(){
let qiandao = cc.sys.localStorage.getItem("setqiandaotig") || 1;
if(qiandao==1){
return true;
}else{
return false;
}
}
//记录签到天数 判断第几个按钮
cc.GAMEDATA.setqianDay=function(day){
cc.sys.localStorage.setItem("qianDay",day>7? 1:day);
}
cc.GAMEDATA.getqianDay=function(){
let day =cc.sys.localStorage.getItem("qianDay")||1;
return Number(day);
}
//获取设置日期
cc.GAMEDATA.setDataday=function(day){
cc.sys.localStorage.setItem("today",day);
}
cc.GAMEDATA.getDataday=function(){
let day =cc.sys.localStorage.getItem("today")||0;
return Number(day);
}
创建Games脚本:
properties: {
SignInUI : cc.Node, //签到面板
}
start () {
if(cc.GAMEDATA.getDataday() !=new Date().getDate()){
cc.GAMEDATA.setqiandao(1);
}else{
cc.GAMEDATA.setqiandao(2);
}
},
//签到按钮
SigInOnClick(){
this.SignInUI.active = true;
for(let i=0;i<7;i++){
if(i== cc.GAMEDATA.getqianDay()-1 && cc.GAMEDATA.getqiandao()){
this.SignInUI.children[i].getComponent(cc.Button).interactable=true;
}else{
this.SignInUI.children[i].getComponent(cc.Button).interactable=false;
}
}
},
//签到按钮点击天数
SigInOnClickDay(event,customData){
debugger;
cc.GAMEDATA.setqiandao(2); //禁止签到
let day =parseInt(customData)+1;
this.SignInUI.children[cc.GAMEDATA.getqianDay()-1].getComponent(cc.Button).interactable=false; //签完 禁用
//TODOO 这里可以写点击按钮后的事件(如奖励)
cc.GAMEDATA.setqianDay(day); //更改天数
cc.GAMEDATA.setDataday(new Date().getDate()); //Date().getDate() 获取本地时间
},
//关闭按钮
SigInOnQuite(event,customData){
this.SignInUI.active=false;
},
代码是判断按钮的组件中的interactable的ture和false来进行签到的
会看到我在代码中是用背景下的子物体数组,来看下节点组件是怎么设置的叭
感谢阅读!