You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity使用Mirror重写方法报CS0115无合适可重写方法求助

问题背景

开发基于Mirror的联机大厅玩家创建/加入功能时,Unity抛出以下CS0115编译错误:

error CS0115: 'NetworkManagerLobby.OnServerConnect(NetworkConnection)': no suitable method found to override
error CS0115: 'NetworkManagerLobby.OnServerAddPlayer(NetworkConnection)': no suitable method found to override

当前环境信息:

  • Unity版本:2021.3.5f1
  • 已添加using Mirror命名空间引用
  • 自定义类NetworkManagerLobby继承自Mirror的NetworkManager
  • 尝试重写的方法签名如下:
public override void OnServerAddPlayer(NetworkConnection conn)
public override void OnServerConnect(NetworkConnection conn)
报错根因

该问题由Mirror版本API不匹配导致:参考的教程使用的是旧版本Mirror,而当前项目安装的是更新版本的Mirror,这两个生命周期方法的基类签名已经发生变更:

  1. 旧版本中两个方法的参数类型为通用的NetworkConnection,新版本服务端侧回调的连接类型细化为NetworkConnectionToClient
  2. 新版本OnServerAddPlayer方法新增了ulong playerControllerId参数,用于对应分屏玩家的控制器ID,自带默认值。
    编写的方法签名和基类可重写方法签名不匹配时,编译器就会抛出找不到可重写方法的错误。
修复方案
  • 修正两个重写方法的签名,和当前Mirror版本的基类定义对齐,代码示例如下:
// 修正OnServerConnect签名
public override void OnServerConnect(NetworkConnectionToClient conn)
{
    // 此处保留原有业务逻辑
    base.OnServerConnect(conn);
}

// 修正OnServerAddPlayer签名
public override void OnServerAddPlayer(NetworkConnectionToClient conn, ulong playerControllerId = 0)
{
    // 此处保留原有业务逻辑
    base.OnServerAddPlayer(conn, playerControllerId);
}
  • 如果修正签名后仍报错,检查项目内是否存在自定义的同名NetworkConnection、NetworkManager类,存在命名冲突时可以写全类型名(比如Mirror.NetworkConnectionToClient)明确引用Mirror下的类型。
  • 如果不想逐处适配新API,可以将项目内的Mirror插件降级到和教程完全一致的版本,避免后续开发过程中碰到更多API不兼容问题。

注意:重写Mirror的NetworkManager生命周期方法时,如果不需要完全替换基类默认逻辑,一定要在方法内调用对应的base方法,否则会出现连接注册失败、玩家对象无法正常生成等隐性bug。

内容的提问来源于stack exchange,提问作者Leanne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:15:27