Новый клиент перехватывает управление у PhotonView (Cloud)

Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение Mizz13 05 апр 2015, 18:09

Возникает проблема при подключении нескольких клиентов к Photon Cloud. Смысл в том, что по нажатии кнопки вход создается новый объект:

Синтаксис:
Используется csharp
GameObject mes = PhotonNetwork.Instantiate("Messanger", Vector3.zero, Quaternion.identity, 0);
myPhotonView = mes.GetComponent<PhotonView>();
DontDestroyOnLoad(mes);


Изначально он имеет, к примеру, ID = 1001. При подключении второго клиент его ID меняется на 2001, при чем подключенный клиент как раз и управляет этим ID (галочка Controlled locally стоит в инспекторе). А при подключении 3 клиента у двух предыдущих ID вновь меняется, при чем на одинаковый - 3001. И у последнего подключенного клиента не активна Controlled locally.

Из-за всех этих смен ID и не контролируемой смене владельцев PhotonView, я не могу пересылать сообщения между клиентами. В чем проблема, и как правильно настроить подключение новых клиентов? (просматривал туториал MarcoPolo, но почему-то там ID у клиентов не меняются).

Вот код создания\подключения к облаку:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class main_menu : Photon.MonoBehaviour {
       
        public GUIStyle style1;
        public GUIStyle style2;
        private PhotonView myPhotonView;       
        private string Login = "log";
        private string Password = "pas";

        void Start () {        
                PhotonNetwork.ConnectUsingSettings("0.1");
        }      
        // Update is called once per frame
        void Update () {               
        }      

        void OnJoinedRoom()
        {
                GameObject mes = PhotonNetwork.Instantiate("Messanger", Vector3.zero, Quaternion.identity, 0);
                myPhotonView =mes.GetComponent<PhotonView>();
                DontDestroyOnLoad(monster);
        }

        void OnGUI()
        {
                GUILayout.Label(PhotonNetwork.connectionStateDetailed.ToString());

                Login = GUI.TextField (new Rect ((Screen.width)/2-75,(Screen.height)/2-100, 150, 30), Login);
                Password = GUI.TextField (new Rect ((Screen.width)/2-75,(Screen.height)/2-60, 150, 30), Password);
                string ToServer = Login+" "+Password;
               
                if (GUI.Button (new Rect ((Screen.width)/2-75,(Screen.height)/2-20, 150, 36), "  Войти в игру", style1)) {
                        myPhotonView.RPC("Login", PhotonTargets.All,ToServer);

                }      
               
                if (GUI.Button (new Rect ((Screen.width)-155,(Screen.height)-41, 150, 36), "      Выход" ,style1)) {
                        Application.Quit();
                }

        }

        void OnJoinedLobby()
        {
                Debug.Log("JoinRandom");
                PhotonNetwork.JoinRandomRoom();
        }
       
        void OnPhotonRandomJoinFailed()
        {
                PhotonNetwork.CreateRoom(null);
        }
}

На Messanger'e висит скрипт ReceiveMessage:
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class ReceiveMessage : Photon.MonoBehaviour {

        private static PhotonView ScenePhotonView;
        private bool loged=false;
        public string Nick;
        public string[] usrs;
        // Use this for initialization
        void Start () {
                ScenePhotonView = this.GetComponent<PhotonView>();
               
        }
       
        // Update is called once per frame
        void Update () {
       
        }
//далее идут различные RPC ф-ции
 
Mizz13
UNец
 
Сообщения: 17
Зарегистрирован: 12 фев 2015, 19:16

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение gnoblin 05 апр 2015, 20:25

я б так не делал "DontDestroyOnLoad(mes);"

в целом сходу не понятно в чем баг, попробуй проверить (вывести в консоль через Debug.Log) в какие моменты ты подключен к серверу, в какой ты комнате находишься итд.

смена айдишек - ненормальное поведение )
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение Mizz13 05 апр 2015, 20:49

gnoblin писал(а):я б так не делал "DontDestroyOnLoad(mes);"

в целом сходу не понятно в чем баг, попробуй проверить (вывести в консоль через Debug.Log) в какие моменты ты подключен к серверу, в какой ты комнате находишься итд.


DontDestroyOnLoad(mes); я писал из-за того, что при входе у меня была смена сцен (без смены комнат). Но была другая проблема: 1 клиент уже находиться на сцене 2, второй клиент при переходе на сцену 2 удаляет ГО mes(Clone) от 1 клиента, и получается на сцене 2 клиента с 1 ГО.

А на счет подключения - я при запуске приложения сразу конекчусь и захожу в комнату, и все время висит статус Joined
Mizz13
UNец
 
Сообщения: 17
Зарегистрирован: 12 фев 2015, 19:16

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение gnoblin 05 апр 2015, 20:57

имхо тебе будет проще всего взять пример фотона и сделать заново на его базе )
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение Mizz13 05 апр 2015, 22:39

gnoblin писал(а):имхо тебе будет проще всего взять пример фотона и сделать заново на его базе )


Какой пример Фотона? я делал частично по MarcoPolo, но там лишние для меня CharacterController, поэтому я и скопировал только подключение и вызов RPC.
Mizz13
UNец
 
Сообщения: 17
Зарегистрирован: 12 фев 2015, 19:16

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение Mizz13 08 апр 2015, 18:13

Ничего не выходит, уже пробовал PhotonView перехватывать через поиск ГО уже подключенных к облаку. Но все равно - при подключении нового клиента он меняет ID уже подключенным клиентам и становиться их "владельцем"...

Вот как уже пытаюсь получить доступ только к своему PhotonView (у него нет Nick)

Синтаксис:
Используется csharp
public PhotonView myPhotonView;
public ReceiveMessage rm;

void OnJoinedRoom()
        {              
                GameObject mes = PhotonNetwork.Instantiate("Messanger", Vector3.zero, Quaternion.identity, 0);
                views = GameObject.FindGameObjectsWithTag("Player");
               
                foreach(GameObject vw in views)
                {
                        rm = vw.GetComponent<ReceiveMessage>();                        
                        if(rm.Nick=="")
                        {
                                myPhotonView = vw.GetComponent<PhotonView>();
                        }
               }
       }
       
Mizz13
UNец
 
Сообщения: 17
Зарегистрирован: 12 фев 2015, 19:16

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение gnoblin 08 апр 2015, 19:19

запости архив с проектом, посмотрим)
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение Mizz13 08 апр 2015, 22:21

gnoblin писал(а):запости архив с проектом, посмотрим)


Проект не получается, закинул свои сцены. И я не архивировал папку Photon Unity Networking
http://multi-up.com/1042782
Mizz13
UNец
 
Сообщения: 17
Зарегистрирован: 12 фев 2015, 19:16

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение gnoblin 09 апр 2015, 16:09

после разархивации проект сразу заработает и можно будет увидеть баг? а чего не положишь скрипты фотонклауда, вдруг у того кто будет смотреть - другая версия пуна?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение Mizz13 09 апр 2015, 17:46

gnoblin писал(а):после разархивации проект сразу заработает и можно будет увидеть баг? а чего не положишь скрипты фотонклауда, вдруг у того кто будет смотреть - другая версия пуна?


Перезалил архив, теперь полный проект. Только удалил AppId от PhotonCloud
http://multi-up.com/1042893
Mizz13
UNец
 
Сообщения: 17
Зарегистрирован: 12 фев 2015, 19:16

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение gnoblin 09 апр 2015, 18:53

спс, версия юнити важна?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение gnoblin 09 апр 2015, 19:50

глянул, предлагаю тебе не менять сцену после входа в комнату )
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение Mizz13 09 апр 2015, 19:57

gnoblin писал(а):глянул, предлагаю тебе не менять сцену после входа в комнату )


Я над этим думал. Пришел к выводу, что можно отключать 1 GUI скрипт и включать другой при входе. При начале игры в любом случае, придется менять сцену. Но проблема даже не в смене сцен. Она же проявляется как только подключается новый клиент.
Mizz13
UNец
 
Сообщения: 17
Зарегистрирован: 12 фев 2015, 19:16

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение gnoblin 09 апр 2015, 20:53

ага вижу, сек
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Новый клиент перехватывает управление у PhotonView (Cloud)

Сообщение gnoblin 09 апр 2015, 20:57

у тебя баг вот тут:

void Start () {
ScenePhotonView = this.GetComponent<PhotonView>();
//if(ScenePhotonView.isMine)
{
//ScenePhotonView.enabled = true;
}

надо вот так:
if(photonView.isMine) { ScenePhotonView = this.GetComponent<PhotonView>(); }
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

След.

Вернуться в Photon

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3