Unity networkta aldığım bir hata

      Unity networkta aldığım bir hata

      Unity network kodlarını internetten yardım alarak yazdım. Maksimum oyuncu sayısı, oda adı , açılan bir odaya girme gibi olayları yaptım. ama oda kurunca sunucuya bağlanmıyor dolayısıyla oda oluşturmuyor. Aldığım hata (85. satırda mı bir sorun var )






      Yazdığım network manager

      Source Code

      1. using UnityEngine;
      2. using System.Collections;
      3. using UnityEngine.UI;
      4. public class NetworkManager : MonoBehaviour {
      5. private string OyunAdi = "unitynetwork_123123";
      6. public int PortNo;
      7. public InputField ServerAdi;
      8. public InputField MaxOyuncuI;
      9. public Transform SpawnPos;
      10. public GameObject ServerPaneli;
      11. public GameObject ServerdanCik;
      12. public GameObject PlayerPrefab;
      13. public GameObject OdaButonu;
      14. public Transform AcikServerler;
      15. bool ListeYenileniyor = false;
      16. HostData[] hostListesi;
      17. private int MaxOyuncu {
      18. get { return int.Parse (MaxOyuncuI.text);}
      19. }
      20. void Update (){
      21. if(ListeYenileniyor && MasterServer.PollHostList().Length>0){
      22. hostListesi= MasterServer.PollHostList();
      23. ListeyiYenile();
      24. ListeYenileniyor=false;
      25. }
      26. }
      27. void ListeyiYenile(){
      28. if (hostListesi [0] == null) {
      29. ListeyiYenile ();
      30. } else {
      31. for (int i = 0; i<hostListesi.Length; i++) {
      32. GameObject HostButtonu = (GameObject)Instantiate (OdaButonu, new Vector3 (0, 0, 0), Quaternion.identity);
      33. HostButtonu.transform.parent = AcikServerler;
      34. HostButtonu.GetComponent<HostAyarlari>().Hostum = hostListesi[i];
      35. HostButtonu.GetComponent<HostAyarlari>().TextDegistir();
      36. RectTransform rect;
      37. rect = HostButtonu.GetComponent<RectTransform> ();
      38. rect.localScale = new Vector3 (1, 1, 1);
      39. rect.localPosition = OdaButonu.GetComponent<RectTransform> ().localPosition;
      40. rect.localRotation = OdaButonu.GetComponent<RectTransform> ().localRotation;
      41. rect.localPosition = new Vector3 (rect.localPosition.x, rect.localPosition.y - 32 * i, rect.localPosition.z);
      42. HostButtonu.name = "oda";
      43. HostButtonu.SetActive (true);
      44. }
      45. }
      46. }
      47. public void ServerdanCikButonu(){
      48. Network.Disconnect ();
      49. MasterServer.UnregisterHost ();
      50. ServerPaneli.SetActive (true);
      51. ServerdanCik.SetActive (false);
      52. }
      53. public void HostaBaglan(HostData host){
      54. Network.Connect (host);
      55. }
      56. public void ServeriOlustur(){
      57. Network.InitializeServer (MaxOyuncu, PortNo,true );
      58. MasterServer.RegisterHost (OyunAdi, ServerAdi.text); // SORUNUN BURDA OLDUĞUNU DÜŞÜNÜYORUM
      59. }
      60. void OnServerInitialized(){
      61. Spawn ();
      62. }
      63. void OnConnectedToServer(){
      64. Spawn ();
      65. }
      66. public void YenileButonu(){
      67. if(!ListeYenileniyor ){
      68. foreach (Transform hostlar in AcikServerler){
      69. if(hostlar.name == "oda"){
      70. Destroy(hostlar.gameObject);
      71. }
      72. }
      73. }
      74. ListeYenileniyor = true;
      75. MasterServer.RequestHostList (OyunAdi);
      76. }
      77. void Spawn(){
      78. ServerPaneli.SetActive (false);
      79. ServerdanCik.SetActive (true);
      80. Network.Instantiate(PlayerPrefab,SpawnPos.position,Quaternion.identity,0);
      81. }
      82. void OnPlayerDisconnected(NetworkPlayer player){
      83. Network.RemoveRPCs (player);
      84. Network.DestroyPlayerObjects (player);
      85. }
      86. }

      Post was edited 5 times, last by “oktembaris77” ().

      Eger Build Settings > Player Settings'de Run In Background'un tick yoksa tick atin.Direkt baglantida actiginiz odaya baglanir fakat master server'a baglanmadigi icin listede gorunmuyor. unity3d.com/master-server bu sayfadan ilk master serveri tiklayip indirin Visual Studio ile build almaniz gerekiyor ama ben buraya buildli versiyonunu ekleyim yoksa ordan deneyin ve acin.Birde Network Manager scriptinizin Start kismina

      Source Code

      1. MasterServer.ipAddress = "127.0.0.1";

      Satirini ekleyin bu kendi master serveriniza baglanmanizi sagliyacak.Sadece kendi bilgisayar veya editor ve build ettiginiz exe ile baglanmanizi sagliyacak.Baska pcden baglanmak icin o "127.0.0.1" external ipiniz gerekiyor onu onla degistirirsiniz ama sadece karsi tarafa verilecek buildde kendinizdekinde calismayabilir eger yine gormez ise 23466 Portunu modemden acin TCP/UDP olarak. Unity Network bu konuda benim network hakkinda paylastigim bazi bilgiler var yardimci olur inceleyebilirsiniz.
      pekala.
      server manager kodu sahnede bir objeye mi atanmış durumda ?
      bu obje sahneler arası geçişte korunuyor mu. (dont destroy on load)

      ayrıca ServerAdi değişkeni public olarak tanımlanmış ama bir değer ataması gördüğüm kadarıyla kod içerisinde yapılmamış, (gözümden kaçmış olabilir hızlıca göz attım sadece.)
      bu değişkenin değeri yanlış atanmış yada atanmamış olabilir.
      bu değerin localhost yada kendi server bilgilerin olduğundan emin ol.
      evet boş bir objeye atanmış durumda. sahne geçişi yok zaten. ServerAdi nı input field la oyuncudan aldım. Yani değeri var.
      Ben modemde port oluşturamadım rasgele bir port kullanıyorum acaba ondan mıdır ? airties modem. port oluşturma biraz farklı. uygulama falan diyor . Port açamıyorum. Yukarıdaki cevapları daha yeni deneme fırsatım oldu umarım olur