参数和基类

  之前遇到过一个挺头疼的bug。

  我们的游戏将所有的数据放在一个单例中,每个人用到的时候都是自己去操作,数据是公开的,随便操作。

  问题来了,突然有一天,一个比较复杂的系统里各种跳转界面,跳转函数的参数都是一个个数据对象,直接可以使用的数据。

  有一个武将卡升级,直接新生成了一个武将卡(服务器给的)并塞到了数据单例的字典里,key没有变,但是value变了。这样之前所有用到这个value的地方,数据都是旧数据。

  虽然可以通过对原始value的fileld赋值操作避免这个bug,但是如果原始的field是个非常庞大的类,操作起来还是麻烦很多,另外谁也不知道会不会有人哪天忘记了又new了一个出来。

  我自己想了个办法。

  传递的参数如果是key,就可以了。只是每次都要根据提供的查询函数,查找相应的value,这样我们的权利就变得越来越小,维护起来也就非常简单了。数据操作必须通过提供的入口,所有的数据都是私有的。

  好了,既然参数是key,那就可以传递基类了。首先,所有的人物,装备,物品。。。都应该继承自一个基类(uid ...)。然后可能要面临到一个传递多个数据的问题(List<itembase>),那就通过“扩展方法”转换出来。

1     public static List<ItemBase> ToItemBaseList(this List<Equipt> pEquipts)
2     {
3         List<ItemBase> tItemBases = new List<ItemBase>();
4         pEquipts.ForEach(v => tItemBases.Add(v));
5         return tItemBases;
6     }

  这样做还有个好处,scrollview 等等都可以很方便的去写初始化函数了(代码生成简单了),肯定还有好多有用的地方。

  不过以上都是个人观点,有利有弊肯定要到实战中才可以看出来。

posted @ 2015-10-19 13:23  李小鸡去你家  阅读(279)  评论(0编辑  收藏  举报