Skip to content

Reference

lilith-avatar-yenyuan edited this page Jun 28, 2020 · 8 revisions

目录

GameManager

游戏流程的控制模块

GameMgrModule

服务器模块的控制模块

服务器模块初始化

在GameMgrModule的Init()函数中加入服务器模块的初始化函数

YourServerModule:Init()

服务器模块Update函数

在GameMgrModule的Update(dt)函数中加入服务器模块的Update函数

YourServerModule:Update(dt)

PlayerMgrModule

客户端模块的控制模块,初始化及Update函数用法可参考GameMgrModule

启用Update

框架没有默认执行GameMgrModulePlayerMgrModule中的Update函数,需要进行手动添加

ServerMain

打开World->S_Code->ServerMain ,加入如下代码:

invoke(
    function()
        GameMgr:StartUpdate()
    end
)

PlayerMain

打开Archetype->Player->Local->C_Code->PlayerMain,加入如下代码:

invoke(
    function()
        PlayerMgr:StartUpdate()
    end
)

服务器模块

存放在Module->S_Module下的模块

客户端模块

存放在Module->C_Module下的模块

模块引用

打开World->Global->ModuleRequireScript

YourModule = require(_yourModuleFolder.YourModule)

事件监听

EventUtil.LinkConnects(_eventFolder,_module, _moduleName,_this)
参数 描述 类型
_eventFolder 事件所在的节点folder,框架中服务器端为world.S_Event,客户端为localPlayer.C_Event Object
_module 模块 Object
_moduleName module的名字,用于打印日志 String
_this module的self指针,用于闭包,通常不用更改 Object

事件绑定

CustomEvent

事件名+'Handler'

YourModule:YourCustomEventHandler()

编辑器内置事件

InitListener()中使用Connect绑定

事件触发

服务器端事件触发

NetUtil.Fire_S(_eventName, ...)

客户端事件触发

NetUtil.Fire_C(_eventName,_player, ...)

事件广播

框架内置了向客户端广播的函数

NetUtil.Broadcast(_eventName, ...)

读表操作

在S_Module->GameCsvModule和C_Module->PlayerCsvModule中包含了读表的操作。

添加表

.csv文件存放在World->Global->Csv目录下

预读表

GameCsv.PreLoad或者PlayerCsv.PreLoad下添加对应表的信息,这个表会在模块初始化时预读。

调用表

服务器端调用方法为:GameCsv.YourTableName

客户端调用方法为:PlayerCsv.YourTableName

对象池

在框架的Utility目录下实现了ObjPoolUtilModule

创建对象池

创建对象池的方法为ObjPoolUtil.Newpool(String _folderName,_objName,_maxCount)

参数 描述 类型
_folderName 世界下的目录名称,用于对象池目录的管理 string
_objName 对象名称,在Archetype下应存在同名对象 string
_maxCount 对象池的最大上限,超过此上限将会销毁 int

这个方法会返回一个对象池,故用法通常为:

local YourPoolName = ObjPoolUtil.Newpool(String _folderName,_objName,_maxCount)

从池中创建对象

YourPoolName:Create(_position,_rotation)
参数 描述 类型
_position 创建对象位置 Vector3
_rotation 创建对象角度 EulerDegree

这个方法会返回创建的对象

从世界中销毁对象到池中

YourPoolName:Destroy(_obj)
参数 描述 类型
_obj 要销毁的对象 Object

Debug工具

框架中自带了一些Debug工具,这些Debug有多个输出级别可以选择,他们在全局定义中已经被定义了,可以在脚本中直接使用。

方法 描述
test() 测试用的输出
debug() 主要用于开发过程中打印一些运行信息
info() 用于生产环境中输出程序运行的一些重要信息
warn() 表明会出现潜在错误的情形 有些信息不是错误信息 但是也要给程序员的一些提示

摄像机工具

截至1.1.1版本,框架实现了让摄像机在水平面上转动到和角色朝向一致的角度的功能。

CamUtil.ToRoleForward(_player, _cam, _time)
参数 描述 类型
_player 摄像机看向的物体 PlayerInstance
_cam 转动的摄像机 Camera
_time 转动过程的时间,不填则瞬间转动 number

音效播放模块

框架中实现了音效的播放模块,需要在World->Csv下的Sound表中进行音效的添加,然后使用SoundUtilModule中的方法:

SoundUtil:PlaySound(_ID, _SoundSourceObj)
参数 描述 类型
_ID 音效的ID int
_SoundSourceObj 音效挂载物体,不填则为2D音效,挂载在主摄像机上 Object

C#双向链表

工具模块中提供了类似C#双向链表的模块,可以查看Wiki或者程智的Github仓库