debuff
BuffControl.cs有update函数不停的判断,调用。
BuffManage.cs里面含有BuffControl.cs判断的函数参数条件,并且可以随时改变,调用参数。
BloodBuff : Buff,public override void BuffFunction函数里面放类型 的函数的判断条件,判断 player_gameObject 的角色属性 是否符合条件,并且 BUFF是否在 player_gameObject 的角色 脚本里面 的List<Buff>,遍历List<Buff> 改变角色属性的函数,使其 BUFF改变角色属性 的函数 仅且执行1次,满足移除BUFF条件 。
或者是 把相关火焰参数的BUFF 放入BuffManage.cs的火焰list中,当火焰参数发生变化,增加或者减少的时候,就调用BuffManage.cs的火焰list遍历一遍,判断 相关的火焰参数的BUFF是否生效。
----------------------------------------------------代码
BuffManage.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BuffManage : MonoBehaviour {
#region Singleton
public static BuffManage instance;
private void Awake()
{
instance = this;
}
#endregion
public List<Buff> list_buff = new List<Buff>();
public void foreachListBuffBool(bool IsEffect)
{
for (int i=0; i<list_buff.Count ;i++)
{
list_buff[i].isEffect = IsEffect;
}
}
}
Buff.cs
using UnityEngine;
//.cs脚本 继承ScriptableObject,才能使得 CreateAssetMenu 生效
[CreateAssetMenu(fileName = "New Buff", menuName = "Buff/Create empty Buff")]
public class Buff : ScriptableObject
{
public string BuffName;
public int CharacterDamage;
public int CharacterArmor;
public bool isEffect = false;
public virtual void BuffFunction(GameObject player_gameobject)
{
//use the item
Debug.Log(" BuffFunction:" + BuffName);
}
public virtual void EffectBuff(GameObject player_gameobject)
{
//use the item
Debug.Log(" EffectBuff:"+ BuffName);
}
public virtual void FailureBuff(GameObject player_gameobject)
{
//use the item
Debug.Log(" FailureBuff:" + BuffName);
}
public virtual void Tooltip()
{
//tool tip buff
}
}
BloodBuff.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; [CreateAssetMenu(fileName = "New Equipment", menuName = "Buff/Create Buff/BloodBuff")] public class BloodBuff : Buff { public override void BuffFunction(GameObject player_gameobject) { base.BuffFunction(player_gameobject); Debug.Log("BloodBuff BuffFunction:" + BuffName); if(isEffect == false) { FailureBuff(player_gameobject); } if (isEffect == true) { EffectBuff(player_gameobject); } } public override void EffectBuff(GameObject player_gameobject) { base.EffectBuff(player_gameobject); Debug.Log("BloodBuff EffectBuff:" + BuffName); } public override void FailureBuff(GameObject player_gameobject) { base.FailureBuff(player_gameobject); Debug.Log("BloodBuff FailureBuff:" + BuffName); } }
BuffControl.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BuffControl : MonoBehaviour {
private BuffManage buffManage;
public GameObject player_gameObject;
// Use this for initialization
void Start () {
buffManage = BuffManage.instance;
}
// Update is called once per frame
void Update () {
ForeachList_Buff();
}
private void ForeachList_Buff()
{
Buff[] array_buff = buffManage.list_buff.ToArray();
for (int i=0; i< array_buff.Length ;i++)
{
if (player_gameObject != null)
{
array_buff[i].BuffFunction(player_gameObject);
}
}
}
}
Buff_Button.cs
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Buff_Button : MonoBehaviour { public void Button_EffectBuff()//Trigger buff { Debug.Log("Button_EffectBuff"); BuffManage.instance.ForeachListBuffBool(true); } public void Button_FailureBuff()//Trigger buff { Debug.Log("Button_FailureBuff"); BuffManage.instance.ForeachListBuffBool(false); } }
相关资源1,持续时间的BUFF的源码
相关资源:
1.
unity-flexible-buff-system
2.
3.
文章最后发布于: 2018-06-10 20:45:33
相关阅读
最近有一位朋友反馈,在Win7系统中借助百度直通车来升级Win10系统过程中,出现了些问题,那就是一直卡在正在获取更新,Win7升级Win10系统
查询系统是学校常用的管理系统,利用学生成绩查询系统,学生可以自助查分,及时了解自己的考试成绩。相比公开考试成绩,学生考试查分系统
安装基于dell edge r520等老机器工作站上系统重装办法
最近力哥让我按安装一个服务器,电脑是老式的刀片式服务器,型号真的老,安装配置超级麻烦,使了个好多办法,一直困在无法读取或写入外部hd
自动抄表项目中用到了Msflxgrd.ocx控件,该表格控件使用很方便,并在32位 XP系统下测试通过,但是客户的电脑是64位WIN7,点击对话框无法
自己亲手制作一个用来清理电脑系统垃圾的小程序,简单方便好用。新建一个记事本,win10系统的用户可以按照下图找到记事本将以下的代