--- sidebarDepth: 1 --- # 调试 ## GetEnableReconnectNetgame 客户端 method in mod.client.extraClientApi - 描述 获取是否允许断线重连 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否允许断线重连 | - 示例 ```python import mod.client.extraClientApi as clientApi clientApi.GetEnableReconnectNetgame() ``` ## GetKeepResourceWhenTransfer 客户端 method in mod.client.extraClientApi - 描述 获取快速切服设置 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否设置快速切服 | - 示例 ```python # 先打开快速切服开关 import mod.client.extraClientApi as clientApi print clientApi.GetKeepResourceWhenTransfer() ``` ## GetResourceFastload 客户端 method in mod.client.extraClientApi - 描述 获取资源快速加载设置 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否开启资源快速加载 | - 示例 ```python import mod.client.extraClientApi as clientApi print clientApi.GetResourceFastload() ``` ## ReloadAllMaterials 客户端 method in mod.client.extraClientApi - 描述 重新加载所有材质文件 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 示例 ```python import mod.client.extraClientApi as clientApi clientApi.ReloadAllMaterials() ``` ## ReloadAllShaders 客户端 method in mod.client.extraClientApi - 描述 重新加载所有Shader文件 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 备注 - 若修改到材质,建议使用ReloadAllMaterials方法。 - 示例 ```python import mod.client.extraClientApi as clientApi clientApi.ReloadAllShaders() ``` ## ReloadOneShader 客户端 method in mod.client.extraClientApi - 描述 重新加载某个Shader文件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | shaderName | str | shader名称 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 备注 - 若同时修改了多个Shader,建议使用ReloadAllShaders方法。 - 示例 ```python import mod.client.extraClientApi as clientApi clientApi.ReloadOneShader("entity.fragment") ``` ## SetEnableReconnectNetgame 客户端 method in mod.client.extraClientApi - 描述 设置是否允许断线重连 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | keep | bool | 是否允许断线重连 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 示例 ```python import mod.client.extraClientApi as clientApi clientApi.SetEnableReconnectNetgame(True) ``` ## SetKeepResourceWhenTransfer 客户端 method in mod.client.extraClientApi - 描述 设置快速切服 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | keep | bool | 是否在切服时保留资源,True为保留资源,False为不保留资源 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 备注 - 快速切服通过在切服时保留资源实现,可以缩短切服等待时间。 - 切服前后的两个服,需要保证资源完全一样,即服务器类型一致。 - 快速切服设置在退出游戏之前一直有效,如果要切到其他类型的服务器,需要在切服前调用clientApi.SetKeepResourceWhenTransfer(False) - 示例 ```python # 先打开快速切服开关 import mod.client.extraClientApi as clientApi clientApi.SetKeepResourceWhenTransfer(True) # 然后切服 import lobbyGame.netgameApi as lobbyGameApi lobbyGameApi.TransferToOtherServer('123', 'game') ``` ## SetResourceFastload 客户端 method in mod.client.extraClientApi - 描述 设置资源快速加载 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | fastload | bool | 是否在进入游戏时快速加载资源,True为快速加载资源,False为不快速加载资源 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 是否成功 | - 备注 - 开启资源快速加载,可以缩短切服等待时间。 - 开启资源快速加载,切服速度比设置SetKeepResourceWhenTransfer慢,但不要求切服前后两个服资源完全一致。 - 物品和方块的自定义贴图需要定义在item_texture.json和terrain_texture.json中,才能开启资源快速加载 - 设置资源快速加载在退出游戏之前一直有效,退出游戏后自动恢复为False - 示例 ```python # 先设置资源快速加载 import mod.client.extraClientApi as clientApi clientApi.SetResourceFastload(True) # 然后切服 import lobbyGame.netgameApi as lobbyGameApi lobbyGameApi.TransferToOtherServer('123', 'game') ``` ## StartMemProfile 服务端客户端 ### 服务端接口 method in mod.server.extraServerApi - 描述 开始启动服务端脚本内存分析,启动后调用[StopMemProfile](#stopMemProfile)即可在路径fileName生成函数内存火焰图,此接口只支持PC端。生成的火焰图可以用浏览器打开,推荐chrome浏览器。 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 备注 - 由于分析时并不区分服务端和客户端,在进行分析时,只需要其中一端startmemprofile和stopmemprofile即可,无需双端同时进行。 - 将鼠标放在一个函数块上时,下方会显示当前函数对应的详细信息,具体含义可见获取性能分析火焰图 - 示例 ```python import mod.server.extraServerApi as serverApi serverApi.StartMemProfile() modfunc()# 处理对应的逻辑 # 之后通过计时器或者其他触发方式调用StopMemProfile serverApi.StopMemProfile(fileName) ``` ### 客户端接口 method in mod.client.extraClientApi - 描述 开始启动客户端脚本内存分析,启动后调用[StopMemProfile](#stopMemProfile)即可在路径fileName生成函数内存火焰图,此接口只支持PC端。生成的火焰图可以用浏览器打开,推荐chrome浏览器。 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 备注 - 由于分析时并不区分服务端和客户端,在进行分析时,只需要其中一端startmemprofile和stopmemprofile即可,无需双端同时进行。 - 将鼠标放在一个函数块上时,下方会显示当前函数对应的详细信息,具体含义可见获取性能分析火焰图 - 示例 ```python import mod.client.extraClientApi as clientApi clientApi.StartMemProfile() modfunc()# 处理对应的逻辑 # 之后通过计时器或者其他触发方式调用StopMemProfile clientApi.StopMemProfile(fileName) ``` ## StartMultiProfile 服务端客户端 ### 服务端接口 method in mod.server.extraServerApi - 描述 开始启动服务端与客户端双端脚本性能分析,启动后调用[StopMultiProfile](#stopmultiprofile)即可在路径fileName生成函数性能火焰图。双端采集时数据误差较大,建议优先使用[StartProfile](#startprofile)单端版本,此接口只支持PC端 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 示例 ```python import mod.server.extraServerApi as serverApi serverApi.StartMultiProfile() modfunc()# 处理对应的逻辑 # 之后通过计时器或者其他触发方式调用StopMultiProfile serverApi.StopMultiProfile() ``` ### 客户端接口 method in mod.client.extraClientApi - 描述 开始启动服务端与客户端双端脚本性能分析,启动后调用[StopMultiProfile](#stopmultiprofile)即可在路径fileName生成函数性能火焰图。双端采集时数据误差较大,建议优先使用[StartProfile](#startprofile)单端版本,此接口只支持PC端 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 示例 ```python import mod.client.extraClientApi as clientApi clientApi.StartMultiProfile() modfunc()# 处理对应的逻辑 # 之后通过计时器或者其他触发方式调用StopMultiProfile clientApi.StopMultiProfile() ``` ## StartProfile 服务端客户端 ### 服务端接口 method in mod.server.extraServerApi - 描述 开始启动服务端脚本性能分析,启动后调用[StopProfile](#stopprofile)即可在路径fileName生成函数性能火焰图,此接口只支持PC端。生成的火焰图可以用浏览器打开,推荐chrome浏览器。 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 备注 - 火焰图主页面示例:
![火焰图示意图](../../picture/flameGraph_mainPage.png) - 如火焰图所示,竖直方向表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。分析性能时主要看火焰图的宽度(其中颜色没有特别意义),火焰图越宽,表示该函数对整体性能的消耗越大。因此需要对该函数进行优化。 - 将鼠标放在一个函数块上时,下方会显示当前函数对应的详细信息,具体含义可见获取性能分析火焰图 - 优化的核心主要是减少调用次数以及优化函数的写法。其中对于开发者而言,只需要关注开发者开发的代码即可,对于部分函数调用到mod框架或者引擎顶层框架进而导致性能消耗较大的,可以尝试通过减少调用次数来进行优化。 - 另外,火焰图支持通过右上方的Search框或者“F3”快捷键对函数关键词进行搜索。同时可以点击函数缩放查看对应的调用栈。 - 示例 ```python import mod.server.extraServerApi as serverApi serverApi.StartProfile() modfunc()# 处理对应的逻辑 # 之后通过计时器或者其他触发方式调用StopProfile serverApi.StopProfile() ``` ### 客户端接口 method in mod.client.extraClientApi - 描述 开始启动客户端脚本性能分析,启动后调用[StopProfile](#stopprofile)即可在路径fileName生成函数性能火焰图,此接口只支持PC端。生成的火焰图可以用浏览器打开,推荐chrome浏览器。 - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 备注 - 火焰图主页面示例:
![火焰图示意图](../../picture/flameGraph_mainPage.png) - 如火焰图所示,竖直方向表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。分析性能时主要看火焰图的宽度(其中颜色没有特别意义),火焰图越宽,表示该函数对整体性能的消耗越大。因此需要对该函数进行优化。 - 将鼠标放在一个函数块上时,下方会显示当前函数对应的详细信息,具体含义可见获取性能分析火焰图 - 优化的核心主要是减少调用次数以及优化函数的写法。其中对于开发者而言,只需要关注开发者开发的代码即可,对于部分函数调用到mod框架或者引擎顶层框架进而导致性能消耗较大的,可以尝试通过减少调用次数来进行优化。 - 另外,火焰图支持通过右上方的Search框或者“F3”快捷键对函数关键词进行搜索。同时可以点击函数缩放查看对应的调用栈。 - 上架时请去掉这个接口的调用 - 示例 ```python import mod.client.extraClientApi as clientApi clientApi.StartProfile() modfunc()# 处理对应的逻辑 # 之后通过计时器或者其他触发方式调用StopProfile clientApi.StopProfile() ``` ## StartRecordEvent 仅Apollo可用 method in mod.server.extraServerApi - 描述 开始启动服务端与客户端之间的脚本事件收发统计,启动后调用[StopRecordEvent](#stoprecordevent)即可获取两个函数调用之间脚本事件收发的统计信息,仅支持租赁服与Apollo网络服环境(不支持单机环境) - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 示例 ```python import mod.server.extraServerApi as serverApi suc = serverApi.StartRecordEvent() # 之后通过计时器或者其他触发方式调用StopRecordEvent result = serverApi.StopRecordEvent() for eventName, data in result.iteritems(): print "event[{}] send={} sendSize={} recv={} recvSize={}".format(eventName, data["send_num"], data["send_size"], data["recv_num"], data["recv_size"]) ``` ## StartRecordPacket 仅Apollo可用 method in mod.server.extraServerApi - 描述 开始启动服务端与客户端之间的引擎收发包统计,启动后调用[StopRecordPacket](#stoprecordpacket)即可获取两个函数调用之间引擎收发包的统计信息,仅支持租赁服与Apollo网络服环境(不支持单机环境) - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 示例 ```python import mod.server.extraServerApi as serverApi suc = serverApi.StartRecordPacket() # 之后通过计时器或者其他触发方式调用StopRecordPacket result = serverApi.StopRecordPacket() for packetName, data in result.iteritems(): print "packet[{}] send={} sendSize={} recv={} recvSize={}".format(packetName, data["send_num"], data["send_size"], data["recv_num"], data["recv_size"]) ``` ## StopMemProfile 服务端客户端 ### 服务端接口 method in mod.server.extraServerApi - 描述 停止服务端脚本内存分析并生成火焰图,与[StartMemProfile](#startMemProfile)配合使用,此接口只支持PC端 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | fileName | str | 具体路径,相对于PC开发包的路径,默认为"flamegraph.svg",位于PC开发包目录下,自定义路径请确保文件后缀名为".svg" | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 示例 ```python import mod.server.extraServerApi as serverApi serverApi.StartMemProfile() modfunc()# 处理对应的逻辑 # 之后通过计时器或者其他触发方式调用StopMemProfile serverApi.StopMemProfile(fileName) ``` ### 客户端接口 method in mod.client.extraClientApi - 描述 停止客户端脚本内存分析并生成火焰图,与[StartMemProfile](#startMemProfile)配合使用,此接口只支持PC端 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | fileName | str | 具体路径,相对于PC开发包的路径,默认为"flamegraph.svg",位于PC开发包目录下,自定义路径请确保文件后缀名为".svg" | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 示例 ```python import mod.client.extraClientApi as clientApi clientApi.StartMemProfile() modfunc()# 处理对应的逻辑 # 之后通过计时器或者其他触发方式调用StopMemProfile clientApi.StopMemProfile(fileName) ``` ## StopMultiProfile 服务端客户端 ### 服务端接口 method in mod.server.extraServerApi - 描述 停止双端脚本性能分析并生成火焰图,与[StartMultiProfile](#startmultiprofile)配合使用,此接口只支持PC端 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | fileName | str | 具体路径,相对于PC开发包的路径,默认为"flamegraph.svg",位于PC开发包目录下,自定义路径请确保文件后缀名为".svg" | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 示例 ```python import mod.server.extraServerApi as serverApi serverApi.StartMultiProfile() modfunc()# 处理对应的逻辑 # 之后通过计时器或者其他触发方式调用StopMultiProfile serverApi.StopMultiProfile() ``` ### 客户端接口 method in mod.client.extraClientApi - 描述 停止双端脚本性能分析并生成火焰图,与[StartMultiProfile](#startmultiprofile)配合使用,此接口只支持PC端 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | fileName | str | 具体路径,相对于PC开发包的路径,默认为"flamegraph.svg",位于PC开发包目录下,自定义路径请确保文件后缀名为".svg" | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 示例 ```python import mod.client.extraClientApi as clientApi clientApi.StartMultiProfile() modfunc()# 处理对应的逻辑 # 之后通过计时器或者其他触发方式调用StopMultiProfile clientApi.StopMultiProfile() ``` ## StopProfile 服务端客户端 ### 服务端接口 method in mod.server.extraServerApi - 描述 停止服务端脚本性能分析并生成火焰图,与[StartProfile](#startprofile)配合使用,此接口只支持PC端 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | fileName | str | 具体路径,相对于PC开发包的路径,默认为"flamegraph.svg",位于PC开发包目录下,自定义路径请确保文件后缀名为".svg" | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 示例 ```python import mod.server.extraServerApi as serverApi serverApi.StartProfile() modfunc()# 处理对应的逻辑 # 之后通过计时器或者其他触发方式调用StopProfile serverApi.StopProfile() ``` ### 客户端接口 method in mod.client.extraClientApi - 描述 停止客户端脚本性能分析并生成火焰图,与[StartProfile](#startprofile)配合使用,此接口只支持PC端 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | fileName | str | 具体路径,相对于PC开发包的路径,默认为"flamegraph.svg",位于PC开发包目录下,自定义路径请确保文件后缀名为".svg" | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | bool | 执行结果 | - 示例 ```python import mod.client.extraClientApi as clientApi clientApi.StartProfile() modfunc()# 处理对应的逻辑 # 之后通过计时器或者其他触发方式调用StopProfile clientApi.StopProfile() ``` ## StopRecordEvent 仅Apollo可用 method in mod.server.extraServerApi - 描述 停止服务端与客户端之间的脚本事件收发统计并输出结果,与[StartRecordEvent](#startrecordevent)配合使用,输出结果为字典,key为网络包名,value字典中记录收发信息,具体见示例,仅支持租赁服与Apollo网络服环境(不支持单机环境) - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | dict | 收发包信息,假如没有调用过StartRecordEvent,则返回为None | - 示例 ```python import mod.server.extraServerApi as serverApi suc = serverApi.StartRecordEvent() # 之后通过计时器或者其他触发方式调用StopRecordEvent result = serverApi.StopRecordEvent() for eventName, data in result.iteritems(): print "event[{}] send={} sendSize={} recv={} recvSize={}".format(eventName, data["send_num"], data["send_size"], data["recv_num"], data["recv_size"]) ``` ## StopRecordPacket 仅Apollo可用 method in mod.server.extraServerApi - 描述 停止服务端与客户端之间的引擎收发包统计并输出结果,与[StartRecordPacket](#startrecordpacket)配合使用,输出结果为字典,key为网络包名,value字典中记录收发信息,具体见示例,仅支持租赁服与Apollo网络服环境(不支持单机环境) - 参数 无 - 返回值 |
数据类型
| 说明 | | :--- | :--- | | dict | 收发包信息,假如没有调用过StartRecordPacket,则返回为None | - 示例 ```python import mod.server.extraServerApi as serverApi suc = serverApi.StartRecordPacket() # 之后通过计时器或者其他触发方式调用StopRecordPacket result = serverApi.StopRecordPacket() for packetName, data in result.iteritems(): print "packet[{}] send={} sendSize={} recv={} recvSize={}".format(packetName, data["send_num"], data["send_size"], data["recv_num"], data["recv_size"]) ```