晓月_游戏属性开发(一) Attribute
简单介绍下游戏属性:
我们玩游戏大部分是在玩一些数值属性。
比如爆了一把绝世好剑,上面带有攻击眩晕概率,我的写法就会在眩晕属性上添加概率。这样在后面的数值计算上就会有相应的计算了。
有的数值也是很炫酷的,比如装备强化到某些值之后也会有相应的特效外观等。像武器发光,武器带残影都帅炸了呢。
好的属性数值设计会增加人的代入感,认同感,趣味性。差的属性数值设计有时候会让人感觉只是一堆空洞的数字,没有动力去追求更加美好的体验。
通用的属性:
首先,很多游戏都有相通的属性值分析。
名字,昵称,生命值,法力值,等级,经验值
攻击力,防御力,暴击率,闪避率 速度 命中率
附加的属性话就有很多讲法了
力量 敏捷 智慧 速度 幸运 智力 破甲 反甲
生命回复 法力回复 感电概率
眩晕概率 属性抗性 复活概率
Attribute.cs
1: 直接一个属性一个属性的创建 int hp ,int mp......
2: 创建一个字典,然后用不同的key来代替不同的属性类型
优点是随时可以添加一个新的属性字段,方便修改
缺点是你得创建一个枚举类型方便你去记录这些属性类型(参见我的Index.cs)所有的属性都必需弄成一个格式,不能混合。我都设置为Int的。
set_Attribute//这个是试着设置数据,如果有的话则直接修改,如果没有的话则直接添加设置属性。
public bool isContainsKey(int key);判断空值现象
get_Attribute( int key ) 提前判断空值现象
属性优化:数据操作类 AttributeHandle
写这个类主要是和上面的数据类分开,主要方便修改一些,简洁一些吧,当然也可以写在一起。
Attribute_Handle 其中里面的修改方法可以从其他的几个类进行处理
添加基本属性
增 减 生命值
增 减 法力值
增 减 经验值
增 减 等级
添加 职业
增 减 攻击力/防御力 等相关属性值,都是从这里进行处理
//暂时添加基础属性添加的方法啦。
public static void set_BasicAttribute(XyAttribute atts, int hp, int mp, int epx, int attack, int defend, int speed)
{
atts.set_attribute((int)index_attribute.hp, hp );
atts.set_attribute((int)index_attribute.mp, mp );
atts.set_attribute((int)index_attribute.epx, epx );
atts.set_attribute((int)index_attribute.attack, attack );
atts.set_attribute((int)index_attribute.defend, defend );
atts.set_attribute((int)index_attribute.speed, speed );
}
一起学习Unity3d的可以加我的Q : 1970007869 加我进群
下面是我在主角中使用刚才属性脚本添加的打印: