文章

BSKGameReferenceManual使用手册

BSKGameReferenceManual使用手册

概述

此文档描述如何在BSKGame中的框架功能和接口

框架

逻辑类关系

  • sealed class Entity,任何以ShowEntity方式创建的Entity,都会挂有Entity组件,GameEntry.Entity.GetEntity形式的接口也是返回此Entity类,是框架和其他功能交互的桥梁

  • abstract clas EntityLogic,继承此类以编写实体/Entity相关的逻辑,实体数据暂时由EntityData类包装,之后如果数据复杂,考虑拆分成单独Component管理

  • abstract GameplayEntity,此类存在于gameplay程序集中,与EntityLogic是一对一的关系,通常与表现无关的代码写在继承类中,并且这一部分的代码可能与服务器共享,但小游戏可能不需要拆的这么细。添加了一些基本的Position Component,但目前还没完全取代EntityData的作用


  • Entity,EntityLogic,GameplayEntity,可以互相获取

  • EntityLogic绑定GameplayEntity,需要在EntityLogic中重载CreateGameplayEntity函数

  • 生命周期,EntityLogic和GameplayEntity的生命周期函数基本相同,之后如果有网络同步,可以在这里进行拓展
    • OnInit,初次创建时调用,回池后再取出不调用
    • OnShow,每次ShowEntity调用
    • OnHide,与OnShow对应,HideEntity时立刻调用
    • OnRecycle,实体回收时调用,通常HideEntity之后下一帧进行回收,但也会根据实体策略进行回收
    • OnUpdate
  • ShowEntity,HideEntity,TypeId用于从Entity表格中找对应数据,ResourceId用于加载自定义数据,例如我使用了下面的Role表格,来获取ResourceId对应的模型,属性Id等


  • 全局事件


  • GameObject加载


  • UI

功能


  • 特效


  • Tag,AddTag,HasTag等相关接口在EntityLogic和GameplayEntity中实现



  • 属性,属性的初始化要在某个时刻进行调用,下面是一个示例,在entity初始化流程中读取Role表格获取propertyId。Property表格中可以配置属性最大值,将按照规则进行读入。属性可以进行绑定,做UI时很方便


  • 输入,目前使用旧的InputManagerSystem


  • 物理/射线,记住调用完之后要回收ImpactInfo


  • 时间,尽量不要在MonoBehaviour的Update中使用Time.deltaTime,后续如果涉及子弹时间等功能,会比较好控制


  • 引用池


本文由作者按照 CC BY 4.0 进行授权

热门标签