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

Unity Photon VR游戏:如何检测玩家是否已连接至大厅?

检测Photon大厅连接状态以控制VR Rig显示

你需要利用Photon提供的API判断玩家是否已连接至大厅,且由于连接是异步操作,仅在Start()里判断一次可能不准确,推荐结合以下两种方式实现需求:

方法1:使用Photon回调事件(推荐)

Photon提供了一系列回调方法,会在玩家成功加入大厅或断开连接时自动触发,无需每帧检测,性能更优:

using UnityEngine;
using Photon.Pun;
using Photon.Realtime;

public class LobbyConnectionChecker : MonoBehaviourPunCallbacks
{
    public GameObject OfflineRig;

    void Start()
    {
        // 初始化时根据当前状态设置Rig
        UpdateRigState(PhotonNetwork.InLobby);
    }

    // 成功加入大厅时触发
    public override void OnJoinedLobby()
    {
        UpdateRigState(true);
    }

    // 断开与Photon服务器连接时触发
    public override void OnDisconnected(DisconnectCause cause)
    {
        UpdateRigState(false);
    }

    // 更新Rig激活状态的工具方法
    private void UpdateRigState(bool isInLobby)
    {
        if (OfflineRig != null)
        {
            OfflineRig.SetActive(!isInLobby);
        }
    }
}

方法2:帧检测(简单直接)

如果只需每帧检查当前是否在大厅中,可在Update()里判断:

using UnityEngine;
using Photon.Pun;

public class LobbyConnectionChecker : MonoBehaviour
{
    public GameObject OfflineRig;

    void Update()
    {
        bool isInLobby = PhotonNetwork.InLobby && PhotonNetwork.IsConnected;
        if (OfflineRig != null)
        {
            OfflineRig.SetActive(!isInLobby);
        }
    }
}

关键API说明

  • PhotonNetwork.InLobby:判断当前玩家是否已加入Photon大厅
  • PhotonNetwork.IsConnected:判断当前是否与Photon服务器保持连接(结合InLobby可避免异常状态)
  • 继承MonoBehaviourPunCallbacks才能使用Photon的回调方法,需确保脚本所在物体已添加PhotonView组件(若无同步需求,可禁用其同步功能)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 00:22:11