在RPG游戏关卡开发的过程中,突然间明白了一个脚本类,该不该设为Static class,或者它的数据成员该不该设为Static!

假设一个场景,一个玩家,若干怪,有一个脚本专门作为数据中心(如GameSetting.cs)。玩家攻击怪,如果在GameSetting.cs中把玩家对怪的伤害值设为public static attackDamage = Random.Range(10, 15);。。。。那么游戏启动后,打第一个怪时,在player.Attack()方法中写了一行代码:enemy.Health -= GameSetting.attackDamage,假设随机值伤害值为12,那么你打第二个怪时,attackDamage将不再有随机性,这个值12已经在打第一个怪时就确定好了(原因:正是因为attackDamage为Static字段,它只属于类,若干对象共享该字段,也就是说,打第一个怪和打第二个怪,就用的GameSetting类的字段,因此public static attackDamage = Random.Range(10, 15);不该放至GameSetting.cs中)!!

 

总结,不能图调用方便就把属性方法设为Static,要考虑,该类中某些属性应该是为多个对象共用,还是为每个对象私用。attackDamage在每次Attack中调用时应该作为每次Attack私用,所有应该单独创建一个Attack类,将attackDamage作为非static成员存至其中!!

posted @ 2013-06-25 15:42  lrwind  阅读(114)  评论(0)    收藏  举报