Files
netease-modsdk-wiki/docs/mcdocs/1-ModAPI/接口/通用/调试.md
2025-03-17 13:24:39 +08:00

866 lines
23 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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