Resumen personal de Unity-Photon Pun2

Configuración antes de entrar en la habitación

1. Use la configuración establecida

    private void Start()
    {
        PhotonNetwork.ConnectUsingSettings();
    }

2. Cambie MonoBehaviour a MonoBehaviourPunCallbacks

public class NetworkLauncher : MonoBehaviourPunCallbacks{}

Solo de esta manera podemos obtener algunos comentarios del servidor Photon.

3. Conéctese al servidor Photon

    public override void OnConnectedToMaster()
    {
        base.OnConnectedToMaster();  //连接Photon服务器
        print("Welcome");
        PhotonNetwork.JoinLobby(default);  //进入游戏大厅
    }

4. Únete o crea una sala

    public void JoinOrCreateButton() 
    {
        RoomOptions options = new RoomOptions
        {
            MaxPlayers = 10  //最大玩家人数
        };
        PhotonNetwork.JoinOrCreateRoom("MyRoom", options, default);
    }

5. Haz un salto de escena después de unirte o crear una habitación

    public override void OnJoinedRoom()
    {
        PhotonNetwork.LoadLevel(1);
    }

código completo

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

public class NetworkLauncher : MonoBehaviourPunCallbacks
{
    public GameObject loginUI;
    public GameObject nameUI;
    public InputField roomName;
    public InputField playerName;

    public GameObject roomListUI;


    private void Start()
    {
        PhotonNetwork.ConnectUsingSettings();
    }

    public override void OnConnectedToMaster()
    {
        base.OnConnectedToMaster();
        print("Welcome");
        nameUI.SetActive(true);
        PhotonNetwork.JoinLobby(default);
    }

    public void PlayButton() 
    {
        nameUI.SetActive(false);
        //NickName玩家名字
        PhotonNetwork.NickName = playerName.text;
        loginUI.SetActive(true);

        if (PhotonNetwork.InLobby) 
        {
            roomListUI.SetActive(true);
        }
    }

    public void JoinOrCreateButton() 
    {
        if (roomName.text.Length < 2) return;
        loginUI.SetActive(false);

        RoomOptions options = new RoomOptions
        {
            MaxPlayers = 10
        };
        PhotonNetwork.JoinOrCreateRoom(roomName.text, options, default);
    }

    public override void OnJoinedRoom()
    {
        PhotonNetwork.LoadLevel(1);
    }
}

 Ingrese su nombre para ingresar al lobby del juego

 Ingrese al lobby, ingrese a la sala después de configurar el nombre de la sala, puede crear una sala o unirse a una sala

Configuración después de entrar en la habitación

1. Instanciar y generar objetos de jugador

GameObject Player = PhotonNetwork.Instantiate("Player", 
                     Vector.one,Quaternion.identity, 0);

 El prefabricado debe colocarse en el paquete PhotonUnityNetworking/Resources

 2. Limite las operaciones del jugador para evitar que el objeto actual opere otro objeto del jugador

    private void Update()
    {
        //如果操作的不是自己的玩家对象,则直接返回true
        if (!photonView.IsMine && PhotonNetwork.IsConnected) return;
    }

3. Sincronización de datos de fotones y sincronización de estados.

(1) Para los objetos que deben sincronizarse, se debe adjuntar el componente PhotonView

 (2) Photon nos proporciona sincronización de posición y sincronización de Animator , y el anuncio se puede completar directamente colgándolo

 

 (3) Sincronización de datos personalizada

I. Necesita heredar IpunObservable

ii. Necesidad de implementar una interfaz personalizada

public class Test : MonoBehaviourPunCallbacks,IPunObservable
{
        public void OnPhotonSerializeView(PhotonStream stream, PhotonMessageInfo info)
    {
        if (stream.IsWriting)
        {
            stream.SendNext(IsthereAnyone);
        }
        else 
        {
            IsthereAnyone = (bool)stream.ReceiveNext();
        }
    }
}

Supongo que te gusta

Origin blog.csdn.net/weixin_46711336/article/details/128249806
Recomendado
Clasificación