kbengine类型别名

脚本基础类型

[Name]			[Size]

UINT8			1
UINT16			2
UINT32			4
UINT64			8

INT8			1
INT16			2
INT32			4
INT64			8

FLOAT			4
DOUBLE			8

VECTOR2			12
VECTOR3			16
VECTOR4			20

STRING			N
UNICODE			N
PYTHON			N
PY_DICT			N
PY_TUPLE		N
PY_LIST			N
MAILBOX			N
BLOB			N

定义一个类型别名

为什么要使用类型别名?

  • 开发人员可以更容易的理解类型的含义

  • 您可以定义复杂的自定义类型

  • 引擎可以自动识别数据类型进行网络传输和存储

文件目录地址 : demo/scripts/entity_defs/alias.xml


### 简单的别名

<BOOL> 		UINT8	</BOOL>
<ENTITY_ID>	INT32	</ENTITY_ID>

<ENTITY_FORBID_COUNTER> ARRAY <of> INT8		</of>		</ENTITY_FORBID_COUNTER>
<ENTITYID_LIST> 	ARRAY <of> ENTITY_ID	</of>		</ENTITYID_LIST>

定义固定字典类型(FIXED_DICT)

数据结构可以是一个类似于Python字典的结构,引擎可以根据用户的定义将这样一个结构的数据通过网络传输到目的地并还原成该结构,或者存储到数据库中以及从数据库中还原。

基本格式如下:

<类型名称> FIXED_DICT

       // (可选实现)
       // 使用此模块(xxx.inst)允许用户重定义该数据结构在内存中存在的形式,
       // 当引擎进行数据存储或进行网络传输时必须还原成引擎原本的数据结构,引擎才可以识别和进行相关操作。
       <implementedBy> xxx.inst </implementedBy>

      // 这个数据结构的成员
       <Properties>

		// 字典的key
		<keyName> 
			// 字典的值
			<Type> 类型名称 </Type>
		</keyName>

       </Properties>
</类型名称>

关于implementedBy机制:参看: 自定义类型


例子1:

<AVATAR_INFOS>	FIXED_DICT
	<Properties>
		<dbid>
			<Type>	DBID	</Type>
		</dbid>
		<name>
			<Type>	UNICODE	</Type>
		</name>
		<roleType>
			<Type>	UINT8	</Type>
		</roleType>
		<level>
			<Type>	UINT16	</Type>
		</level>
	</Properties>
</AVATAR_INFOS>	

在内存中的默认形式:

    AVATAR_INFOS = {"dbid" : 1, "name" : "kbengine", "roleType" : 1, "level" : 0}

例子2:

<AVATAR_INFOS_LIST>	FIXED_DICT
	<implementedBy>AVATAR_INFOS.inst</implementedBy>
	<Properties>
		<values>
			<Type>	ARRAY <of> AVATAR_INFOS </of>	</Type>
		</values>
	</Properties>
</AVATAR_INFOS_LIST>	

在内存中的默认形式(如果没有实现implementedBy):

    AVATAR_INFOS_LIST = {"values" : [{"dbid" : 1, "name" : "kbengine", "roleType" : 1, "level" : 0}, 
			{"dbid" : 2, "name" : "kbengine1", "roleType" : 2, "level" : 1}]}

如果实现implementedBy, 用户可以将其在内存中存储为如下:

    AVATAR_INFOS_LIST = {"kbengine" : {"dbid" : 1, "name" : "kbengine", "roleType" : 1, "level" : 0}, 
			"kbengine1" : {"dbid" : 2, "name" : "kbengine1", "roleType" : 2, "level" : 1}}

例子3:

<BAG>	FIXED_DICT
	<Properties>
		<values>
			<Type>	ARRAY <of> ARRAY <of>INT64 </of> </of>	</Type>
		</values>
	</Properties>
</BAG>	

在内存中的默认形式(如果没有实现implementedBy):

    BAG = {"values" : [[1,2,3], [4,5,6], [7,8,9]]}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值