servidor
2 participantes
Página 1 de 1
servidor
como saber quantos usuarios estao conectados no servidor e como criar uma lista de salas?
richerd- Avançado
- PONTOS : 3243
REPUTAÇÃO : 11
Respeito as regras :
Re: servidor
LEMBRANDO O TUTORIAL E PARA O PHOTON.
Para criar a lista de salas no photon primeiramente você tem que criar uma GUI onde ficarar, Primeiramente crie um canvas na sua scene principal -> Crie uma nova Prefab e chame-o de "Salas" Depois crie um Scroll View-> Edite-o o Content do ViewPort para "RoomContent" e crie a prefab das "Room" Adcione um button a prefab e crie um Text nela onde ficara o nome da sala já criada é adcione essa script a prefab da "rooms"
Depois no "RoomContent" adcione-O essa script
Agora na prefab principal da "Salas" adcione-o 2 scripts serão
E
É pronto, Lembrando Crie A prefab salas no Canvas e Adcione o ScrollView nela, Depois edite-o o content do viewport para "RoomContent" e crie outra prefab que se chamara "Rooms" onde serão as salas criadas, Não se esqueça de criar uma nova pasta e renomea-la para "UI" e adcionar a prefab dos "Rooms" nela, Espero que tenha entendido bem, Não da pra explicar muito mas qualquer coisa so falar.
Para criar a lista de salas no photon primeiramente você tem que criar uma GUI onde ficarar, Primeiramente crie um canvas na sua scene principal -> Crie uma nova Prefab e chame-o de "Salas" Depois crie um Scroll View-> Edite-o o Content do ViewPort para "RoomContent" e crie a prefab das "Room" Adcione um button a prefab e crie um Text nela onde ficara o nome da sala já criada é adcione essa script a prefab da "rooms"
- Código:
using UnityEngine;
using UnityEngine.UI;
public class RoomList : MonoBehaviour
{
[SerializeField]
private Text _roomNameText;
private Text RoomNameText
{
get { return _roomNameText; }
}
private void Start()
{
GameObject lobbyCanvasGO = CanvasManager.Instance.LobbyFunction.gameObject;
if (lobbyCanvasGO == null) return;
LobbyFunction lobbyFunction = lobbyCanvasGO.GetComponent<LobbyFunction>();
Button button = GetComponent<Button>();
button.onClick.AddListener(() => lobbyFunction.OnClickRoom(RoomNameText.text));
}
private void OnDestroy()
{
Button button = GetComponent<Button>();
button.onClick.RemoveAllListeners();
}
public string RoomName { get; private set; }
public void SetRoomNameText(string text)
{
RoomName = text;
RoomNameText.text = RoomName;
}
public bool Updated { get; set; }
}
Depois no "RoomContent" adcione-O essa script
- Código:
using Photon.Pun;
using Photon.Realtime;
using System.Collections.Generic;
using UnityEngine;
public class RoomListDisplay : MonoBehaviourPunCallbacks
{
[SerializeField]
private GameObject _roomPrefab;
private GameObject RoomPrefab
{
get { return _roomPrefab; }
}
private List<RoomList> _roomListingButtons = new List<RoomList>();
private List<RoomList> RoomListButtons
{
get { return _roomListingButtons; }
}
public override void OnRoomListUpdate(List<RoomInfo> roomList)
{
foreach (RoomInfo room in roomList)
{
RoomReceived(room);
}
RemoveOldRooms();
}
private void RoomReceived(RoomInfo room)
{
int index = RoomListButtons.FindIndex(x => x.RoomName == room.Name);
if (index == -1)
{
if (room.IsVisible && room.PlayerCount < room.MaxPlayers)
{
GameObject roomListingObj = Instantiate(RoomPrefab);
roomListingObj.transform.SetParent(transform, false);
RoomList roomListing = roomListingObj.GetComponent<RoomList>();
RoomListButtons.Add(roomListing);
index = (RoomListButtons.Count - 1);
}
}
if (index != -1)
{
RoomList roomListing = RoomListButtons[index];
roomListing.SetRoomNameText(room.Name);
roomListing.Updated = true;
}
}
[PunRPC]
public void RemoveOldRooms()
{
List<RoomList> removeRooms = new List<RoomList>();
foreach (RoomList roomListing in RoomListButtons)
{
if (!roomListing.Updated)
{
removeRooms.Add(roomListing);
}
else
{
roomListing.Updated = false;
}
}
foreach (RoomList roomListing in removeRooms)
{
GameObject roomListingObj = roomListing.gameObject;
RoomListButtons.Remove(roomListing);
Destroy(roomListingObj);
Debug.Log(roomListingObj.name + " is Destroyed");
}
}
}
Agora na prefab principal da "Salas" adcione-o 2 scripts serão
- Código:
using Photon.Pun;
using UnityEngine;
public class LobbyFunction : MonoBehaviour
{
[SerializeField]
private RoomListDisplay _roomListDisplay;
private RoomListDisplay RoomListDisplay
{
get { return _roomListDisplay; }
}
public void OnClickRoom(string roomName)
{
if (PhotonNetwork.JoinRoom(roomName))
{
Debug.Log("Player Entrou Na Sala");
}
else
{
Debug.Log("Deu erro ao entrar na sala :(");
}
}
}
E
- Código:
using UnityEngine;
public class CanvasManager : MonoBehaviour
{
public static CanvasManager Instance;
[SerializeField]
private LobbyFunction _lobbyFunction;
public LobbyFunction LobbyFunction
{
get { return _lobbyFunction; }
}
private void Awake()
{
Instance = this;
}
}
É pronto, Lembrando Crie A prefab salas no Canvas e Adcione o ScrollView nela, Depois edite-o o content do viewport para "RoomContent" e crie outra prefab que se chamara "Rooms" onde serão as salas criadas, Não se esqueça de criar uma nova pasta e renomea-la para "UI" e adcionar a prefab dos "Rooms" nela, Espero que tenha entendido bem, Não da pra explicar muito mas qualquer coisa so falar.
Diguinho- MembroAvançado
- PONTOS : 2589
REPUTAÇÃO : 15
Idade : 23
Áreas de atuação : Programação
Respeito as regras :
Tópicos semelhantes
» cliente/servidor
» Servidor dedicado
» Conectar ao servidor
» duvida sobre servidor
» Multiplayer com servidor dedicado
» Servidor dedicado
» Conectar ao servidor
» duvida sobre servidor
» Multiplayer com servidor dedicado
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos