主界面只之等级解锁
首先由要一张记录模块等级解锁的表暂且叫做LevelUnlock
其次要有个脚本,主要负责界面的遮罩的展示
然后要有个等级解锁的管理者(这里是考虑到这个还比较常用)暂且叫ButtonLockMgr,主要有处理各模块的服务器协议(等级),判断是否解锁,解锁是否弹窗等......
最后就是逻辑表现了
下面贴一下代码
emmm好像也没啥要贴的,大家自己感受一下吧......
public class BtnLvLock : MonoBehaviour
{
private GameObject Mask; // 遮罩
private UILabel _txtInfo; // 解锁信息
private const string LockInfo = "级解锁";
// 隐藏遮罩
public void TextLockHide(bool isHide)
{
if (Mask != null)
Mask.SetActive(isHide);
}
public void SetMode(int param)
{
_mode = param;
SetLevelText();
}
private void SetLevelText()
{
if (_txtInfo == null) return;
var lv = GameData.instance.GetRankUnlock(_mode);
_txtInfo.text = lv == null ? "" : string.Format("{0}{1}", lv.level, LockInfo);
}
}
public class ButtonsLockMgr
{
public static bool Click(int mode)
{
var tb = GameData.instance.GetRankUnlock(mode);
if (tb == null) return true;
var lv = UserManager.GetRank() >= tb.level;
if (lv)
return true;
// 这里弹个没解锁的提示
return false;
}
// 更新解锁状态,mode是等级限制表的id
public static void UpdataLock(BtnLvLock param,int mode)
{
if (param == null) return;
var tb = GameData.instance.GetRankUnlock(mode);
if (tb == null) return;
var lv = UserManager.GetRank()>= tb.level; // 判断等级是否够了
if (lv)
{
param.TextLockHide(false);
}
else
{
param.TextLockHide(true);
}
}
}
大约就是这样子啦.