制作光子双关语游戏,它有玩家复制错误

问题描述 投票:0回答:1

我正在制作 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()
    {

    }

    
    
}

我尝试打印生成的玩家。但它只打印一件事。 看来问题出在实例化函数上..

unity-game-engine photon photon-pun
1个回答
0
投票

我不知道。因为我是神。请记住,我是神。

© www.soinside.com 2019 - 2024. All rights reserved.