我正在制作 Photon.Pun FPS 游戏,如果其他玩家已经加入房间,并且当我加入房间时,其他玩家正在复制。我该如何修复这个错误? 这是脚本:
RoomManager 脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Photon.Pun;
using TMPro;
using Unity.VisualScripting;
using Photon.Realtime;
public class RoomManager : MonoBehaviourPunCallbacks
{
public static RoomManager instance;
public GameObject player;
public GameObject playersWeapon;
[Space]
public Transform spawnPoint;
public GameObject Connectingcam;
public TextMeshPro placeholderText;
public string nickname;
private pauseScript pauseScreenScript;
[Space]
public GameObject nameUI;
public GameObject connectUI;
void Awake()
{
instance = this;
}
public void ChangeNickname(string n)
{
nickname = n;
}
public void JoinRoomButtonPressed()
{
nameUI.SetActive(false);
connectUI.SetActive(true);
if(nickname == "")
{
nickname = "이름없는사용자" + Random.Range(0, 99999).ToString();
}
Debug.Log("Connecting to Server");
PhotonNetwork.ConnectUsingSettings();
}
// Start is called before the first frame update
void Start()
{
}
public override void OnConnectedToMaster()
{
base.OnConnectedToMaster();
Debug.Log("Connected to Server");
PhotonNetwork.JoinLobby();
}
public override void OnJoinedLobby()
{
base.OnJoinedLobby();
PhotonNetwork.JoinOrCreateRoom("test", null, null);
}
public override void OnJoinedRoom()
{
Connectingcam.SetActive(false);
base.OnJoinedRoom();
Debug.Log("Joined Room");
SpawnPlayer();
}
// Update is called once per frame
void Update()
{
}
public override void OnDisconnected(DisconnectCause cause)
{
base.OnDisconnected(cause);
Debug.Log("Disconnected from Server");
}
public override void OnPlayerEnteredRoom(Player newPlayer)
{
base.OnPlayerEnteredRoom(newPlayer);
}
public void SpawnPlayer(){
if(PhotonNetwork.IsConnected && PhotonNetwork.LocalPlayer.IsLocal)
{
Debug.Log("Spawning Player");
GameObject _player = PhotonNetwork.Instantiate(player.name, spawnPoint.position, Quaternion.identity);
_player.GetComponent<PlayerSetup>().IsLocalPlayer();
_player.GetComponent<HP>().IsLocalPlayer = true;
_player.GetComponent<voidDeath>().IsLocalPlayer = true;
_player.GetComponentInChildren<Weapon>().IsLocalPlayer = true;
_player.GetComponent<PhotonView>().RPC("SetNickname", RpcTarget.AllBuffered, nickname);
PhotonNetwork.LocalPlayer.NickName = nickname;
Debug.Log("Spawned Player");
}
}
public void killPlayer()
{
}
}
我尝试打印生成的玩家。但它只打印一件事。 看来问题出在实例化函数上..
我不知道。因为我是神。请记住,我是神。