版权声明:转载请注明 https://blog.csdn.net/hl1991825/article/details/84140480
rpg项目中角色属性多种多样,策划脑洞多大,属性就有多少种.所以用一个变量存一条属性这种方式在项目中肯定会被老大骂(当然小游戏无所谓了).
不可取:
public class ActorData{
public int Hp;
public int Mp;
public int Def;
...
}
要保证灵活和扩展性,我使用了字典的方式存储
定义属性枚举
public enum PropTag{
Hp, //血量
Mp, //蓝量
Def, //防御
}
现在属性类可以写成这样
public class ActorData{
public Dictionary<PropTag,int> m_PropDatas = new Dictionary<PropTag,int>();
//设置属性
public void SetPropData(PropTag tag,int val){
if (m_PropDatas.ContainsKey(tag)) {
m_PropDatas[tag] = val;
} else {
m_PropDatas.Add(tag, val);
}
}
//获取属性
public int GetPropData(PropTag tag){
if(m_PropDatas.ContainKey(tag)){
return m_PropDatas[tag];
}
return 0;
}
//属性增加
public void AddPropData(PropTag tag,int addVal){
int oldVal = GetPropData(tag);
SetPropData(tag,oldVal+addVal);
}
//属性减少
public void SubPropData(PropTag tag,int subVal){
int oldVal = GetPropData(tag);
SetPropData(tag,oldVal-subVal);
}
//属性是否存在
public bool PropTagExist(PropTag tag){
return m_PropDatas.ContainKey(tag);
}
}