-
Notifications
You must be signed in to change notification settings - Fork 4
游戏阵营设计
ilvxna edited this page Aug 8, 2018
·
1 revision
问: 求助T T.在做卡牌类型的游戏,关于进入房间分配阵营. 我想在Cell下的Space的onEnter(self,entityMailbox)中随机分配阵营,和开始游戏对人物属性进行初始化. 这些我都写在接口中,由avatar来继承. (1)但是entityMailbox没办法直接使用,只能调用def里的方法,想在Space中保存avatar的引用,这种想法可行吗? (2)目前想用KBEngine.entities.get(entityMailbox.id)来获得,这样可以吗? (3)如果(2)可以那么效率怎么样,因为这是一个在当前进程上所有实体中寻找的方法,实体少了还好,多了的话会不会效率变慢呢?
可能意思表达的不清晰,就是我想在Space实体中保存一个Avatar实体的引用,以便于随时调用它...求助该怎么做呢?
答:
如果是我来做, 我会在base上就分配好了阵营, 在玩家进入房间之前就设置玩家的self.celldata[阵营] = x, 玩家在cell上创建后就已经知道了自己的阵营。 如果想在房间中保存不同阵营的玩家列表, 也可以在房间没创建时, 在base上的space实体的celldata就把玩家的id列表丢进去, cell创建后就有了。
一般不建议直接存储实体的引用, 很容易造成内存泄漏, 关于py的循环引用导致不能释放的问题你自己百度看看。 KBEngine.entities.get(, python的map用红黑树来处理的, 基本上self.x在python底层也是一个map查询, 这个行为太普遍了。
我认为你无需担忧这个性能, 一个进程中不可能出现海量导致map性能明显下降的数量级, 一般来说, 一个实体或者上万实体的查询效率差不多。