Пятница, 29 Марта 2024, 12:13

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Photon Cloud. Вопрос про RPC
Photon Cloud. Вопрос про RPC
lakorisДата: Четверг, 16 Января 2014, 20:01 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Здравствуйте. Изучаю Photon Cloud, столкнулся с проблемой, связанной с RPC.
Мне надо передавать по сети значение переменной, которая изменилась во время игры:

Код

void OnTriggerEnter(Collider other) {
   if (other.tag != this.gameObject.tag){
    var hppp = other.GetComponent<hp>();
    hppp.curhp -= 100;
}


Нужно передавать изменение значения переменной curhp.
Если создавать дополнительный void, перенести последнюю строчку кода (hppp.curhp -= 100;) в него, и перед void поставить [RPC], а потом
уже вызывать в OnTriggerEnter этот void с RPC, то выдаст ошибку, мол, я не знаю, что такое hppp.curhp.

Есть ли какие-либо догадки по данной проблеме?
seamanДата: Четверг, 16 Января 2014, 21:51 | Сообщение # 2
старожил
Сейчас нет на сайте
Цитата
Есть ли какие-либо догадки по данной проблеме?

Есть, конечно. Просто вы не знаете что такое "область видимости переменной"
Переменная определенная внутри функции - снаружи не видна.
PS^ совет - почитать книжки по программированию.
lakorisДата: Четверг, 16 Января 2014, 22:08 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
seaman,
Цитата seaman ()
PS^ совет - почитать книжки по программированию.

Вы меня оскорбили.

Цитата seaman ()
Переменная определенная внутри функции - снаружи не видна.

Я понимаю, что с этой переменой можно работать только внутри той функции, в которой мы ее "получили", но вопрос в другом:
"Как решить данную проблему? Как обойти это?"
ЛевшаДата: Четверг, 16 Января 2014, 22:36 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
передавать нужные значения при вызове функции через аргументы.

NetworkView.RPC


X.cor.R (Prologue)

Сообщение отредактировал Левша - Четверг, 16 Января 2014, 22:37
lakorisДата: Суббота, 18 Января 2014, 00:05 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
Левша, можно пример?
ЛевшаДата: Суббота, 18 Января 2014, 03:12 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
lakoris, А по ссылке не пример ?

Код

BlaBla(volume); // передача

function BlaBla (volume : int) {  //  прием
       var myVolume : int -= volume;
}


X.cor.R (Prologue)

Сообщение отредактировал Левша - Суббота, 18 Января 2014, 03:19
lakorisДата: Понедельник, 20 Января 2014, 18:56 | Сообщение # 7
постоянный участник
Сейчас нет на сайте
Левша, почитал насчет передачи параметров в другую функцию.
Код
void OnTriggerEnter(Collider other) {
   if (other.tag == this.gameObject.tag){
    var hppp = other.GetComponent<hp>();

    squareRef(ref hppp.curhp);
    photonView.RPC("squareRef",PhotonTargets.All);
    
   PhotonNetwork.Instantiate("Flame1", gameObject.transform.position, gameObject.transform.rotation, 0);   
     PhotonNetwork.Destroy(gameObject);

  }

   }

С помощью squareRef(ref hppp.curhp); я передаю значение переменной curhp, которое я получил в void OnTriggerEnter

А вот так принимаю этот параметр уже в другой функции:
Код
[RPC]
  public void squareRef(ref float refParameter){
   refParameter -= 100;
   Debug.Log(refParameter);
  }


Но выбивает ошибочку
Цитата
PhotonView with ID 1009 has no method "squareRef" that takes 0 argument(s): .....


Ошибка как раз таки из-за [RPC] перед функцией squareRef. Попробовал убрать [RPC] - ошибка осталась. Насколько я понимаю, Юни не видит мой [RPC].
ЛевшаДата: Понедельник, 20 Января 2014, 19:17 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
у тебя в приемнике аргумент типа float, ты в него передаешь параметр PhotonTargets.All - это float ?

X.cor.R (Prologue)
lakorisДата: Понедельник, 20 Января 2014, 19:26 | Сообщение # 9
постоянный участник
Сейчас нет на сайте
Левша, PhotonTargets.All здесь - это, я так понимаю, цели.
А после этого уже надо дописать параметр, котоырй передаю.
Код
photonView.RPC("squareRef",PhotonTargets.All, hppp.curhp);

Снова ошибка вылазит:
Цитата
PhotonView with ID 1013 has no method "squareRef" that takes 1 argument(s): Single
seamanДата: Понедельник, 20 Января 2014, 19:32 | Сообщение # 10
старожил
Сейчас нет на сайте
ref нафига?
lakorisДата: Понедельник, 20 Января 2014, 19:53 | Сообщение # 11
постоянный участник
Сейчас нет на сайте
seaman, Вот

Добавлено (20.01.2014, 19:53)
---------------------------------------------
lakoris, ну да, без ref ошибок нет, но то, что находится в void squareRef не выполняется теперь.

ЛевшаДата: Понедельник, 20 Января 2014, 20:15 | Сообщение # 12
почти ветеран
Сейчас нет на сайте
Цитата lakoris ()
Левша, PhotonTargets.All здесь - это, я так понимаю, цели.

Ну так и я об этом...


X.cor.R (Prologue)
lakorisДата: Понедельник, 20 Января 2014, 20:36 | Сообщение # 13
постоянный участник
Сейчас нет на сайте
Левша, можешь меня в скайп добавить? Поговорим об этой проблеме. Надоело мне уже, все какие-то ошибки лезут)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Photon Cloud. Вопрос про RPC
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг