-
Notifications
You must be signed in to change notification settings - Fork 4
访问其他baseapp实体(globalData)
ilvxna edited this page Aug 6, 2018
·
5 revisions
问: 我现在在测试同时启动多个baseapp的环境; 目前遇到问题如下:
KBEngine.createBaseLocally( "Spaces", {} )
这个是在最开始启动那个baseapp进程创建1个实体,如果这样只创建1个实体,在另外一个baseapp是否能够访问到呢?
def onBaseAppReady(isBootstrap):
"""
KBEngine method.
baseapp已经准备好了
@param isBootstrap: 是否为第一个启动的baseapp
@type isBootstrap: BOOL
"""
INFO_MSG('onBaseAppReady: isBootstrap=%s' % isBootstrap)
# 安装监视器
Watcher.setup()
if isBootstrap:
# 创建spacemanager
KBEngine.createBaseLocally( "Spaces", {} )
# 创建实例
KBEngine.createBaseLocally("Shops")
KBEngine.createBaseLocally("Channel")
KBEngine.createBaseLocally("GameMgr")
答: 不能直接访问到。
你可以参考demo怎么访问Spaces的。
问:
D:\demo\kbengine_demos_assets-0.7.0\scripts\base\interfaces\GameObject.py:
def getSpaces(self):
"""
获取场景管理器
"""
return KBEngine.globalData["Spaces"]
这个吗?
答: 对。
问:
还是有问题,试了各种办法,如果开2个baseapp,另外一个玩家登陆进来,在不用的baseapp里面 获取全局
KBEngine.globalData["GameMgr"]
但是取不到里面的数据;
答:
先要向globalData注册, 看demo。
class GameMgr(KBEngine.Base, GameObject):
def __init__(self):
KBEngine.Base.__init__(self)
GameObject.__init__(self)
DEBUG_MSG("GameMgr::__init__")
KBEngine.globalData["GameMgr"] = self