kbengine定义一个实体教程

来源:互联网 发布:像素数据技术 编辑:程序博客网 时间:2024/05/01 05:34

定义实体

什么时候需要定义实体:

需要进行数据存储。能够方便的远程访问。需要引擎管理和监控, 例如: AOI、Trap、等等。当灾难发生后服务端可以自动进行灾难的恢复。

什么时候需要定义实体的属性:

需要进行数据存储。实体被迁移后数据仍然有效(仅cellapp会迁移实体,比如跳转场景)。当灾难发生后服务端可以自动进行灾难的恢复。

什么时候需要定义实体的方法:

能够方便的远程访问。

您需要执行以下步骤:

  1. 注册实体

    目录地址 : demo/scripts/entities.xml

    例子:

     <root>     <Account/>     <Avatar/>     <Spaces/>     <Space/>     <Monster/>     <NPC/>     <Gate/> </root>
  2. demo/scripts/entity_defs目录下创建一个定义文件

    例子: Account.def

  3. 你可能需要定义一些属性和方法

    1. demo/scripts/目录下有三个子目录(base、cell、client),你可以根据需要添加Account.py。

    2. 不是每个实体都存在(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)
0 0
原创粉丝点击