You need to enable JavaScript to run this app. Photon Pun 2 重写回调方法报CS0115无合适可重写方法错误
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.07 08:36:03