Skip to content

访问其他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       
Clone this wiki locally