第一步:Entity的配置
Entity的配置
为了加深印象,我们假设需要这么一个实体:它可以向服务器say hello,当服务器收到后广播给所有客户端。
我们把该Entity命名为FirstEntity。
第一步:Entity声明
很简单,在{项目资产库}/scripts/entities.xml文件中,写入该Entity相关字段:
<root>
<FirstEntity hasClient="true"></FirstEntity>
</root>
本教程中的FirstEntity实体是有客户端部分的,所以这里,我们的FirstEntity实体是指明hasClient="true"。
就一行类似XML的标签就完成了我们Entity的声明。我们接着看如何配置?
第二步:Entity的配置
Entity的配置,其实就是根据业务需求,对def配置文件的编写,让引擎和各个服务器组件知道该Entity有哪些方法和属性。我们看看根据之前的设计需求,如何来编写?
1:新建def配置文件
在“scripts/entity_defs”下,新建一个名为FirstEntity.def的文件,该文件就是对实体FirstEntity的def配置文件(不同实体需要根据其名字新增不同的def文件,如Monster实体必须在该文件夹下有Monster.def配置文件,否则启动服务器时会出错)。def文件与xml文件相似,编写的语法也和xml相似。
2:添加方法声明
根据例子中的设计需求,我们需要增加say hello的方法,在FirstEntity.def文件中写入如下内容:
<root>
<!--cell上的方法声明-->
<CellMethods>
<!--say hello指令-->
<say>
<!--该参数可以让此方法暴露给客户端调用-->
<Exposed/>
<!--hello的内容-->
<Arg> UNICODE </Arg>
</say>
</CellMethods>
<!--客户端上回调的方法声明-->
<ClientMethods>
<!--当实体进入世界空间后,通知客户端-->
<onEnter>
</onEnter>
<!--通知客户端,广播say hello-->
<onSay>
<Arg> UNICODE </Arg>
</onSay>
</ClientMethods>
</root>
其中,root是根节点,类似于xml的根节点。
CellMethods内是该实体在cell上声明的方法,这里我们声明一个叫做say的方法。标签名为方法名,标签Arg是方法参数的类型的声明区域,如UNICODE表示字符串,用来指明hello的内容;Exposed标签可以把该方法暴露给客户端调用。这样一来,我们的客户端可以向服务器say hello了。
ClientMethods内是该实体在客户端上的方法声明,这里我们声明一个叫做onEnter的方法,当实体进入世界空间后,通知客户端。同时我们声明了一个叫做onSay的方法,在收到say的时候,会广播给所有客户端。
OK,到这里,我们的FirstEntity def配置基本完工了。
接下来,让我们进行FirstEntity实体的代码实现吧~ 点我进入下一节