zoukankan      html  css  js  c++  java
  • KBE_那些事

    • 批处理文件不要放在工具栏执行,这里有坑:工具栏运行批处理文件,当前路径(%cd%)不是批处理文件所在路径
    • 日志的输出(DEBUG_MSG 和 INFO_MSG)都被输出在({资产库}/logs/*.log),类似模式logger_cellapp_2019.1.1.log,logger_baseapp_2019.1.1.log
    • 在def文件中,方法块(CellMethods/BaseMethods/ClientMethods)中的方法
      块名只是表示了该方法所在的区域(cellapp/baseapp/客户端)
      • 在cellapp/baseapp中的方法(标签为:<CellMethods>和<BaseMethods>),添加标签<Exposed/>即可暴漏给客户端——客户端调用服务器上的,这些文件生成目录由gensdk.bat批处理文件设置
      • 在属性中设置标签<Flags>,可以设置属性作用范围,可以参考我的这篇随笔
    • def文件定义后生成了什么呢?他们是啥关系?
      eneities.xml中声明对象PlayerEntity


      则在def文件中必须使用名称PlayerEntity.def


      def中我们用来声明属性方法等
      运行批处理文件后,生成两个cs文件EntityCallPlayerEntityBasePlayerEntityBase
      EntityCallPlayerEntityBase:包含两个类,分别是暴漏给客户端的,base下的方法类和cell下的方法类
      PlayerEntityBase:这是一个抽象类,包含了上面的两个类的对象和def中定义的属性(如果在客户端有调用如falgs = ALL_CLIENTS后者其他可以让客户端调用的,则客户端才有该属性),也包含了一些其他的回调函数。
      • 属性,properities:如果客户端有的话,属性有值变化的虚回调,如:virtual onNameChanged(string ondValue),继承后重写
      • base方法,basemethods:
    • cell方法cellmethods:当cell中的一个方法使用标签<exposed>暴漏给客户端时,客户端调用该函数则可以调用服务端的相应Python函数
      def中定义函数 Broadcast 并且暴漏给客户端调用,参数类型为UNICODE


      然后在Cell文件夹中我们创建PlayerEntity.py脚本,必须继承KBEngine.Entity类,定义好客户端调用的python函数

      tips1:BroadCast有三个参数,我们在def中只给了一个,第一个是self,那这个callerID是KBE给所有暴漏给客户端的方法自动添加的吗?????
      tips2:最后一句我们调用了所有客户端的方法,这样我们就把content的内容发给了所有在线的客户端,这个函数也是自己写的,见下条。
      tips3:这篇随笔没有给出onServerBroadcast的内容,可以不写最后一句,只要cell的日志中有结果就行(DEBUG_MSG())。

      运行批处理生成后,在这个类中出现了我们可以使用的函数,调用这个函数就可以调用服务器中的相应python脚本

      那如何调用呢?
      首先我们需要写一个类,继承PlayerEntityBase,并且实现一些必须的抽象函数,这是一个具有完善功能的实体,名称为PlayerEntity,不能随意,咳咳!
      实现一下抽象函数,如果有的话,不上图了!

      调用方法如图所示:

      tips1:KBEngineApp是个单例,这也是我们要写一个类(如:public class logapp:KBEMain )继承KBEMain类的原因,就是挂在了
      tips2:获取单例后我们获取了当前玩家的entity对象:player(),并且安全强制转换成PlayerEntity后保存
      tips3:这时候我们再调用PlayerEntity下的EntityCall的对象来调用服务器函数Broadcast
        这样我们就可以在log中找到
      tips4:KBEngine中客户端的实体类型在文件{资产库}/res/server/kbengine.xml中定义

    • 在上面的操作过程中尝试了一下给最终的PlayerEntity换名,但是不行,必须同时跟换服务器上的名称,包括脚本、kbemain.xml,否则报错

  • 相关阅读:
    LeetCode:数组(三)
    LeetCode:数组(二)
    LeetCode:数组(一)
    python实现栈的基本操作
    python基本内置函数
    Pycharm的常见Debug调试方法(持续更新)
    计算广告系列(一)-基本概念整理
    es与solr对比
    数据库优化
    java线程池
  • 原文地址:https://www.cnblogs.com/bbdr/p/10567077.html
Copyright © 2011-2022 走看看