Jump to content
Unity Insider Forum

Photon GetRoomList problem


swat243

Recommended Posts

Hallo Leute,

 

 

 

Ich habe das Problem,das ich keine Room List abrufen kann,also man klickt auf Refresh und für jeden raum soll ein Button gespawnt werden.

 

 

weiß Jemand was es ist,ich habe getestet ob man direkt mit der IP verbinden kann zum server und das funktioniert gut,aber er findet keinen einzigen server bei der List :/

 

 

Die Button werden dann via GirdLayout ein geordnet,also ist das kein Problem :P:D

 

 

Script:

 

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
public class ServerManager : MonoBehaviour {

// Use this for initialization
void Start () {
 PhotonNetwork.ConnectUsingSettings ("ZombieManiaV0.00");

}

// Update is called once per frame
public void Update () {


}

public Text ServerName;
public Text ServerPort;

public GameObject canvas;
public void CreateServer()
{

 Debug.Log ("Create server now");

 RoomOptions roomOP = new RoomOptions (){isVisible = true, maxPlayers = 6};

 PhotonNetwork.CreateRoom(ServerName.text+ServerPort.text,roomOP,TypedLobby.Default);
 DontDestroyOnLoad (canvas);
 Application.LoadLevel(1);



}



public Transform player;
public Vector3 Spawn;
public Text ServerIP;
public void ConnectToIP(){Debug.Log("Joined:" +ServerIP.text.ToString() ); PhotonNetwork.JoinRoom (ServerIP.text); DontDestroyOnLoad (canvas);
 Application.LoadLevel(1);}


public void  OnJoinedRoom()
{
 Destroy (canvas);
 Debug.Log ("Finshed to creating a room");
 GameObject player1 = (GameObject)PhotonNetwork.Instantiate (player.name,Spawn, Quaternion.identity, 0);
 Transform solider = player1.transform.FindChild ("player");
 Transform cam = player1.transform.Find ("camkeep/cam");
 PlayerMovement playerMove = solider.GetComponent<PlayerMovement> ();playerMove.enabled = true;
 SetAtctiveFalseIfNOMIne CamEnable = cam.GetComponent<SetAtctiveFalseIfNOMIne> ();CamEnable.enabled = true;


}
public Vector2 BeginToListServers;
public Button serverSign;
public GameObject serverGrid;

public static List<Button>servers = new List<Button>();

public void RefreshServerList()
{
 Debug.Log ("Looking for server");
 servers.Clear ();
 RoomInfo[] infoRooms = PhotonNetwork.GetRoomList();
 foreach(RoomInfo raum in infoRooms )
 {
  Debug.Log("Created server");
  Button server = (Button)Instantiate(serverSign,BeginToListServers,Quaternion.identity);
  server.name = raum.name+" | "+raum.playerCount+" / "+raum.maxPlayers;
  server.transform.parent =  serverGrid.transform;

  servers.Add(server);
 }


}
}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dir wurde das schon öfters gesagt, poste bitte nicht immer dein komplettes Skript und lass uns dann suchen. Erklär dein Problem genauer, keiner hier weiß was du genau machen willst und wie du es umsetzt. Und keiner hat Lust sich dann mit deinem Code rumzuschlagen.

Deshalb bitte ich dich, erklär dein Problem genauer und schmeiß nicht immer mit Code durch die Gegend...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das Problem ist,das wenn ich ein server auf habe,dass die Liste Nichts Anzeigt,obwohl ein server verfügbar ist :/

 

 

Das hier ist der Abschnitt wo alles passiert,wenn man auf den BUtton klickt ,wird dieser abschnitt ausgeführt und werden via GridLayout in der richtigen position gebracht

 

Wenn der Abschnitt ausgeführt wird debugt er "Looking for server" und das macht er.Dann macht erst das Array Leer wo die Server Button drin gesammelt werden und entleert ja die alten server buttons,dann wird für jeden Server den es gibt ein BUtton gespawnt und das parent bei der server Grid gesetzt und der Name wird mit dem Daten befüllt.

 

 

 

public void RefreshServerList()
{
 Debug.Log ("Looking for server");
 servers.Clear ();
 RoomInfo[] infoRooms = PhotonNetwork.GetRoomList();
 foreach(RoomInfo raum in infoRooms )
 {
  Debug.Log("Created server");
  Button server = (Button)Instantiate(serverSign,BeginToListServers,Quaternion.identity);
  server.name = raum.name+" | "+raum.playerCount+" / "+raum.maxPlayers;
  server.transform.parent =  serverGrid.transform;

  servers.Add(server);
 }

 

 

Das Problem ist jetzt,das eigentlich ein server Button auftauchen sollte,aber es passiert nichts,hab auch geguckt ,ob die RefreshServer void ausgeführt wird und das wird sie.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also es passiert garnichts wenn ich auf refresh klicke :/

Das script abschnitt wird auf jedemfall ausgeführt und das Objekt was gespawnt wird ist ein Button das in den Resources Ordner ist.

 

 

Könntet ihr mir sagen was ihr soo macht um eure server list zu bekommen ? :blink:

 

 

8fa15b-1440771696.png

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich finde es witzig wie du Ipadresse und Port Eingabe bei Photon simulierst, obwohl alles da mit Lobbies und Räumen funktionieren xD.

 

Mach mal bei RerfreshList mal Debug.log rein, so ungefähr wie bei mir.

foreach(RoomInfo raum in infoRooms )

{

Debug.log("Raum gefunden: " + raum)

}

Natürlich brauchst du andere Zeilen nicht löschen.

 

Und dann guck mal ob du beim Refreshen Raum gefunden irgendwo steht

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Bild ist leider unscharf für mich ^^.

Am besten benutzt du http://imgur.com/ :P

 

Kannst dann so posten:

http://i.imgur.com/Qjifowp.jpg

 

Jetzt weiß du, dass dein Problem nicht an UI liegt, sondern an Photon. Irgendwas ist da falsch.

 

Kannst nach RoomInfo[] infoRooms = PhotonNetwork.GetRoomList(); einfach Debug.log("Anzahl der Räume: " + infoRooms.count); machen oder lenght machen. Weiß gerade nicht welches richtig war ^^. Logischerweise alles größer 0 bedeutet das da mindestens ein Raum existiert.

 

Achja mir fällt noch was ein. Vielleicht ist dein Raum den du erstellst als Privat deklariert. Musst du mal gucken.

 

Bei meinem Flapping Crew sieht so aus und ist sichtbar.

public void hostGame(int maxplayers, string uniquegame, string roomname, string comment) {
 RoomOptions roomOp = new RoomOptions();
 roomOp.maxPlayers = (byte)maxplayers;
 PhotonNetwork.JoinOrCreateRoom(roomname, roomOp, TypedLobby.Default);
}

 

Aber ich sehe du hast IsVisible = true. Sollte eigentlich gehen.. hmmm.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Auf dem Bild ist nur zu sehen das ich ein server auf hab und 22 mal auf den Refresh button war und 22 mal debug wurde,das ich auf refresh war XD

 

Tja dann muss ich halte die Zwei Alternative nutzen Random joining und direkt über Server adresse verbinden(Also nur der Name XD ip klingt professioneller genau wie port :P:D ),

 

Also auf Multiplayer könnte ich gar nicht mehr verzichten für mein Spiel ,wäre jaa langweilig wenn man alleine gegen zombie wellen verteidigt :huh:

 

 

 

Unity ist auch vollen bugs einmal haben die inputs von der UI nicht mehr regiert,als in mitten in ein Projekt war und es konnte weg XD oder wenn ein Build fertig hab und auf Full screen geh ist die UI Gui und Ray total verbuggt und ist nicht mehr spiel bar mehr

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...