Photon Pun 2 重写回调方法报CS0115无合适可重写方法错误
核心报错原因
两个CS0115编译错误的本质逻辑很直接:
- 你当前编写的脚本只继承了Unity原生的
MonoBehaviour,但OnConnectedToMaster、OnJoinedLobby这类是Photon PUN2定义的专属联机生命周期回调,不属于原生MonoBehaviour的内置方法 - 你给方法加了
override关键字尝试重写,但父类MonoBehaviour中根本不存在这两个可重写的虚方法,编译器自然抛出“无合适方法可用于重写”的错误
解决步骤
- 替换脚本的继承基类:将原脚本的继承关系从
MonoBehaviour改为Photon PUN2提供的专属回调基类MonoBehaviourPunCallbacks,该基类内置了所有Photon联机流程的可重写回调方法 - 确认依赖完整性:确保项目中Photon PUN2包正常导入、没有出现包损坏或版本不匹配的问题,且代码顶部已经引入
using Photon.Pun;命名空间(你现有代码的这步配置是正确的) - 参考修改后的可运行代码:
using System.Collections; using System.Collections.Generic; using UnityEngine; using Photon.Pun; // 修正继承关系,替换原MonoBehaviour public class PhotonLauncherScript : MonoBehaviourPunCallbacks { void Start() { Debug.Log("Connecting to Master"); PhotonNetwork.ConnectUsingSettings(); } public override void OnConnectedToMaster() { Debug.Log("Connected to Master"); PhotonNetwork.JoinLobby(); } public override void OnJoinedLobby() { Debug.Log("Joined Lobby succesfully"); } void Update() { } }
常见避坑提示
- 不要为了消掉编译报错直接去掉
override关键字、保留同名方法定义:这种写法下Photon的事件分发系统根本不会主动调用这两个方法,联机流程会卡在连接主服务器的环节无法继续 - 如果修改继承后依然报找不到回调方法的错误,检查当前PUN2的版本:部分早期版本的回调基类归属在
Photon.Unity命名空间下,需要补充对应命名空间的引用 - 效果验证:编译通过后运行场景,控制台会依次输出连接中、主服务器连接成功、加入大厅成功三条日志,代表回调逻辑正常触发
内容的提问来源于stack exchange,提问作者Dr.coder
相关产品推荐
相关产品推荐

