好久没写东西了,主要是在上班期间确实没时间,一回到家就想玩游戏?,现在闲下来了(其实是项目突然解散了,是的,突然,上午还在开发新功能,下午就解散了那种?),想写点东西(不然几天不摸代码手生)!!!
一般游戏,不管氪金不氪金,基本上都会有活动,一是提升玩家的游戏激情,二是促进消费(其实大部分都是坑钱的活动).其实就单独某个活动来讲,并不复杂,烦就烦在那种定时开启结束的.我这里讲的是一套简单的活动框架,大概功能包括:活动标签加载,活动加载,活动刷新,小红点(待定)提示等功能.
草图如下:
顶部是标题和关闭按钮,下方左侧是活动标签,右侧是对应的活动.
最终效果大致如下(一,活动切换)
(二)倒计时结束活动刷新
首先我们来说一下这个各个脚本的用处,脚本不多,大致讲一下
Act_SignIn.cs和Act_Test.cs是具体活动的对应脚本,这里只是临时用来测试的,就不多说了
活动框架真正用到的是其他三个===>
ActivityMgr.cs : 活动管理器,主要负责各个部分的通信,活动数据管理,活动通用接口实现,主要是数据和逻辑部分的处理,放在这里;
ActivityMainUI.cs : 活动主UI控制脚本,包括创建标签,加载活动,刷新界面等;
ActivityTabObj.cs : 标签脚本,控制标签初始化,倒计时等;
具体代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
//活动数据
public struct activityData
{
public int id;
public string name;
public bool permanent;//常驻标志(为true则不需要开启关闭时间)
public int openTime;//开启时间
public int closeTime;//关闭时间
}
//活动名字(预制体名字)
public enum E_ActivityName
{
//签到
ActSignIn = 1,
//.....
ActTest = 2,
}
public class ActivityMgr
{
private static ActivityMgr _mgr = null;
public static ActivityMgr GetMgr()
{
if (_mgr == null)
{
_mgr = new ActivityMgr();
}
return _mgr;
}
public List<activityData> ActivityDatas = new List<activityData>();
public List<Transform> actTabObjList = new List<Transform>();
public ActivityTabObj curSelTab = null;
public ActivityMainUI actMainUI = null;
public void InitActivityDatas()
{
activityData data1 = new activityData();
data1.id = 1;
data1.name = "签到";
data1.permanent = true;
ActivityDatas.Add(data1);
activityData data2 = new act