/// <summary> /// buff按频率回调操作 /// </summary> void DoFrequencyBuff() { BuffCfg buffCfg = new BuffCfg { buffID = (int)BuffType.BuffFrequency, buffType = BuffType.BuffFrequency, buffCalculate = BuffCalculateType.Frequency, buffOverlap = BuffOverlap.ResterTime, maxLimit = 5, frequencyTime = 1, //频率间隔 }; BuffDataActor buffData = BuffDataActor.CreateData(buffCfg); buffData.OnStart += () => { Debug.Log(">>>>>>>>>>>" + buffData.buffType.ToString() + "开始啦啦"); }; buffData.OnFinsh += () => { Debug.Log(">>>>>>>>>>>" + buffData.buffType.ToString() + "结束啦啦"); }; int count = 0; // 频率回调事件 buffData.OnFrequency += () => { count++; Debug.Log(">>>>>>>>>>>" + buffData.buffType.ToString() + "回调 " + count + "次"); }; entityBuff.DoBuff(buffData); }
/// <summary> /// Buff进行一次操作 /// </summary> void DoOnceBuff() { BuffCfg buffCfg = new BuffCfg { buffID = (int)BuffType.BuffOnce, buffType = BuffType.BuffOnce, buffCalculate = BuffCalculateType.Once, buffOverlap = BuffOverlap.ResterTime, maxLimit = 5, frequencyTime = 0, }; BuffDataActor buffData = BuffDataActor.CreateData(buffCfg); buffData.OnStart += () => { Debug.Log(">>>>>>>>>>>" + buffData.buffType.ToString() + "开始啦啦"); }; buffData.OnFinsh += () => { Debug.Log(">>>>>>>>>>>" + buffData.buffType.ToString() + "结束啦啦"); }; // 倒计时回调 buffData.OnCurTime += delegate(float curTime) { Debug.Log("结束计时回调>>>>>>>>>>>" + buffData.buffType.ToString() + curTime); }; entityBuff.DoBuff(buffData); }
/// <summary> /// buff按叠加层进行操作 /// </summary> void DoAddLayerBuff() { BuffCfg buffCfg = new BuffCfg { buffID = (int)BuffType.BuffAddLayer, buffType = BuffType.BuffAddLayer, buffCalculate = BuffCalculateType.Once, buffOverlap = BuffOverlap.AddLayer, //叠加层 maxLimit = 10, frequencyTime = 1, maxLayer = 5, numData = "/* 添加层的参数 */", }; BuffDataActor buffData = BuffDataActor.CreateData(buffCfg); buffData.OnStart += () => { Debug.Log(">>>>>>>>>>>" + buffData.buffType.ToString() + "开始啦啦"); }; buffData.OnFinsh += () => { Debug.Log(">>>>>>>>>>>" + buffData.buffType.ToString() + "结束啦啦"); }; // 叠加回调事件 buffData.OnAddLayer += (object numData) => { Debug.Log(">>>>>>>>>>>" + buffData.buffType.ToString() + "当前层 " + buffData.CurLayer); Debug.Log(">>>>>>>>>>> 回调参数 " + numData.ToString()); }; entityBuff.DoBuff(buffData); }
//==== 栈存储方法 /// <summary> /// 弹出 /// </summary> /// <returns></returns> protected static BuffDataActor Pop() { if (poolCache.Count < 1) { BuffDataActor bd = new BuffDataActor(); return(bd); } return(poolCache.Pop()); }
protected static Stack <BuffDataActor> poolCache = new Stack <BuffDataActor>(); // 栈存储 /// <summary> /// 外部创建实例化对象 /// </summary> /// <param name="buffCfg">Buff信息</param> /// <returns></returns> public static BuffDataActor CreateData(BuffCfg buffCfg) { BuffDataActor tempData = Pop(); tempData.buffID = buffCfg.buffID; tempData.buffType = buffCfg.buffType; tempData.BuffCalculate = buffCfg.buffCalculate; tempData.buffOverlap = buffCfg.buffOverlap; tempData.maxLimit = buffCfg.maxLimit; tempData.frequencyTime = buffCfg.frequencyTime; tempData.numData = buffCfg.numData; tempData.maxLayer = buffCfg.maxLayer; //DataBase 内部动态属性初始化 tempData.curLayer = 0; tempData.curTime = 0; tempData.curFrequencyTime = 0; tempData.isFinish = false; tempData.ClearAllCallBack(); // 回调 return(tempData); }
/// <summary> /// 压入 /// </summary> /// <param name="buffData"></param> protected static void Push(BuffDataActor buffData) { poolCache.Push(buffData); }