无法从“字符串”转换为“Photon.RealTime.AppSettings”

问题描述

我正在尝试使用光子统一制作多人游戏,但我收到“无法从“字符串”转换为“Photon.RealTime.AppSettings”“错误。这可能是愚蠢的事情,所以我提前道歉。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Photon.Pun;
using Photon.Realtime;

public class MenuControler : MonoBehavIoUr
{
    [Serializefield] private string VersionName = "0.1";
    [Serializefield] private GameObject UsernameMenu;
    [Serializefield] private GameObject ConnectPanel;
    
    [Serializefield] private InputField UsernameInput;
    [Serializefield] private InputField CreateGameInput;
    [Serializefield] private InputField JoinGameInput;
    
    private void Awake()
    {
        // Error happens here
        PhotonNetwork.ConnectUsingSettings(VersionName);
    }
    
    private void Start()
    {
        UsernameMenu.SetActive(true);
    }

    private void OnConnectedToMaster()
    {
        PhotonNetwork.JoinLobby(TypedLobby.Default);
        Debug.Log("Connected");
    }
}

解决方法

如果您查看文档 PhotonNetwork.ConnectUsingSettings() 需要输入 AppSettings 但您提供的是 string 类型。

您可以做的只是使用正确的类型,例如 var appSettings = new AppSettings();

然后给这个类分配正确的属性,最后把这个对象提供给ConnectUsingSettings(appSettings)

,

这是一个 PUN Classic 剩余代码。正如您在 PUN Classic to PUN 2 Migration Notes 上所读到的:“PhotonNetwork.ConnectUsingSettings() 不再需要 gameVersion 参数。”而且由于 AppSettings 是一个可选参数,因此只需调用不带参数的 PhotonNetwork.ConnectUsingSettings(),PUN 2 将使用光子服务器设置。