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();
}
}
}