首页 > 代码库 > kbengine定义实体
kbengine定义实体
定义实体
什么时候需要定义实体:
需要进行数据存储。能够方便的远程访问。需要引擎管理和监控, 例如: AOI、Trap、等等。当灾难发生后服务端可以自动进行灾难的恢复。
什么时候需要定义实体的属性:
需要进行数据存储。实体被迁移后数据仍然有效(仅cellapp会迁移实体,比如跳转场景)。当灾难发生后服务端可以自动进行灾难的恢复。
什么时候需要定义实体的方法:
能够方便的远程访问。
您需要执行以下步骤:
注册实体
目录地址 :
demo/scripts/entities.xml
例子:
<root> <Account/> <Avatar/> <Spaces/> <Space/> <Monster/> <NPC/> <Gate/> </root>
在
demo/scripts/entity_defs
目录下创建一个定义文件例子: Account.def
你可能需要定义一些属性和方法
在
demo/scripts/
目录下有三个子目录(base、cell、client),你可以根据需要添加Account.py。不是每个实体都存在(client, base, cell)这三个部分, 你可以根据需要做出一些选择。
定义文件的格式
<root> <Properties> // 属性名称 <accountName> // 属性类型 <Type> UNICODE </Type> // (可选) // 属性的自定义协议ID,如果客户端不使用kbe配套的SDK来开发,客户端需要开发跟kbe对接的协议, // 开发者可以定义属性的ID便于识别,c++协议层使用一个uint16来描述,如果不定义ID则引擎会使用 // 自身规则所生成的协议ID, 这个ID必须所有def文件中唯一 <Utype> 1000 </Utype> // 属性的作用域 (参考下方:属性作用域章节) <Flags> BASE </Flags> // (可选) // 是否存储到数据库 <Persistent> true </Persistent> // (可选) // 存储到数据库中的最大长度 <DatabaseLength> 100 </DatabaseLength> // (可选, 不清楚最好不要设置) // 默认值 <Default> kbengine </Default> // (可选) // 数据库索引, 支持UNIQUE与INDEX <Index> UNIQUE </Index> </accountName> ... ... </Properties> <ClientMethods> // 客户端暴露的远程方法名称 <onReqAvatarList> // 远程方法的参数 <Arg> AVATAR_INFOS_LIST </Arg> <Utype> 1001 </Utype> </onReqAvatarList> ... ... </ClientMethods> <BaseMethods> // Baseapp暴露的远程方法名称 <reqAvatarList> // cell暴露方法必须存在这个标记 <Exposed/> <Utype> 1002 </Utype> </reqAvatarList> ... ... </BaseMethods> <CellMethods> // Cellapp暴露的远程方法名称 <hello> <Utype> 1003 </Utype> </hello> </CellMethods></root>
例子: 在客户端中调用base方法获得角色列表(Account.py):
self.base.reqAvatarList()
属性作用域
[类型] [client] [base] [cell]BASE - * -BASE_AND_CLIENT * * -CELL_PRIVATE - - *(cell)CELL_PUBLIC - - *(cells)CELL_PUBLIC_AND_OWN *(client) - *(cells)ALL_CLIENTS *(clients) - *(cells)OWN_CLIENT *(client) - *(cell)OTHER_CLIENTS *(other clients) - *(cells)
kbengine定义实体
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。