Reference - lilith-avatar/avatar-ava GitHub Wiki
目录
GameManager
游戏流程的控制模块
GameMgrModule
服务器模块的控制模块
服务器模块初始化
在GameMgrModule的Init()函数中加入服务器模块的初始化函数
YourServerModule:Init()
服务器模块Update函数
在GameMgrModule的Update(dt)函数中加入服务器模块的Update函数
YourServerModule:Update(dt)
PlayerMgrModule
客户端模块的控制模块,初始化及Update函数用法可参考GameMgrModule
启用Update
框架没有默认执行GameMgrModule和PlayerMgrModule中的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仓库