ощибки при работе с GameObject.SendMessage()

Программирование на Юнити.

ощибки при работе с GameObject.SendMessage()

Сообщение manjak 27 июн 2010, 17:49

помогите, пожалуйста, справиться с GameObject.SendMessage().

при попытке использовать простой код:
Код: Выделить всё
GameObject.SendMessage("Func");


выдает ошику: Assets/MainScript.cs(14,28): error CS0120: `UnityEngine.GameObject.SendMessage(string)': An object reference is required for the nonstatic field, method or property. я в C# тоже далеко не специалист, но могу никак понять какая связь этой ошибки с моим кодом, если единственной переменной внутри скобок является строка. или проблема в самой функции? я вообще не видел чтобы где-та в скриптах использовались static функции.

когда добавляю в код какой-нибудь value
Код: Выделить всё
GameObject.SendMessage("Func", 5);
ругается, что переменная не того типа. действительно в хелпе написано, что value : object = null, но в примере на JS стам же передается именно число, а не какой-то объект. что и как я могу передавать в качестве value в C# тогда?

что я делаю не так?
manjak
UNец
 
Сообщения: 8
Зарегистрирован: 18 май 2010, 17:30

Re: ощибки при работе с GameObject.SendMessage()

Сообщение Golandez 27 июн 2010, 18:30

Покажите как вы Funk обьявили.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: ощибки при работе с GameObject.SendMessage()

Сообщение DbIMok 27 июн 2010, 20:09

не, дело не в этом. юнити (почти) русским языком пишет: необходима ссылка на объект. вы обращаетесь к функции класса GameObject, вот она и говорит, что для этого ф-ия должна быть статик. чтобы обратиться через экземпляр объекта на котором висит скрипт, нужно использовать gameObject. если вы посмотрите в пример, то увидите, что именно так там и написано, с маленькой буквы (переменные с маленькой, классы с большой). да, мелочи имеют значение.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: ощибки при работе с GameObject.SendMessage()

Сообщение manjak 27 июн 2010, 21:23

спасибо! люблю я на таких мелочах повисать на пол дня .

еще я пропустил, что мне на самом деле был нужен BroadcastMessage и не хватало знаний о том как parent'ов прописывать, но я это наверстал :)
manjak
UNец
 
Сообщения: 8
Зарегистрирован: 18 май 2010, 17:30

Re: ощибки при работе с GameObject.SendMessage()

Сообщение theSILENT 01 авг 2010, 17:26

Не получается вызвать функцию на родителе объекта из другого скрипта , через SendMessageUpwards():

SendMessageUpwards из скрипта оружия:
Код: Выделить всё
if (Physics.Raycast (transform.position, transform.right, bullet_hit) ){
hitPart = bullet_hit.transform.tag;
bullet_hit.collider.SendMessageUpwards("ApplyDamage",damage,hitPart,SendMessageOptions.DontRequireReceiver);
}

В моем случае коллайдер прикручен к кости персонажа и нужно вызвать функцию в скрипте самого верхнего предка.

скрипт "приемника повреждений" (прицеплен к самому верхнему предку):
Код: Выделить всё
function ApplyDamage(damage : float, bodyPart: String) {
бла бла бла .........
}

При попадании в коллайдер выдает:
MissingMethodException: Method not found: 'UnityEngine.CapsuleCollider.SendMessageUpwards'.

Пробовал передавать объекту с простой иерархией , почему то - тоже самое. Вроде сделал все как в FPS tutorial-е сделано :-?

Что я сделал не так? Заранее спасибо.
Аватара пользователя
theSILENT
UNец
 
Сообщения: 44
Зарегистрирован: 30 ноя 2009, 20:36
Откуда: Россия, Крым, г. Ялта
  • Сайт

Re: ощибки при работе с GameObject.SendMessage()

Сообщение DbIMok 01 авг 2010, 18:34

дело в том, что функция "не резиновая". в нее нельзя просто так взять и добавить десяток параметров (см. в справке). тебе нужно передавать в единственном параметре ссылку на некую структуру, в которой будет содержаться все, что тебе нужно.
правильный вопрос - половина ответа. учитесь формулировать вопросы понятно.
Новости > _Telegram чат @unity3d_ru (11.6k/4.8k online) > _Telegram канал @unity_news (4.8k подписчиков) > Телеграм тема > "Спасибо"
Аватара пользователя
DbIMok
Адепт
 
Сообщения: 6372
Зарегистрирован: 31 июл 2009, 14:05

Re: ощибки при работе с GameObject.SendMessage()

Сообщение theSILENT 01 авг 2010, 18:45

DbIMok писал(а):дело в том, что функция "не резиновая". в нее нельзя просто так взять и добавить десяток параметров (см. в справке). тебе нужно передавать в единственном параметре ссылку на некую структуру, в которой будет содержаться все, что тебе нужно.
Ясно , спс.
Аватара пользователя
theSILENT
UNец
 
Сообщения: 44
Зарегистрирован: 30 ноя 2009, 20:36
Откуда: Россия, Крым, г. Ялта
  • Сайт


Вернуться в Скрипты

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

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