Вторник, 26 Ноября 2024, 20:06

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Unity Problem
AhmadДата: Суббота, 22 Марта 2014, 22:02 | Сообщение # 1
частый гость
Сейчас нет на сайте
Здравствуйте у меня кривые руки (Или что то с Unity). У меня есть один скрипт в нем есть вот это :
Код
gameObject.Find("MainCamera").GetComponent("MouseOrbit").ySpeed = 120;

И он все хорошо работает.
Но когда я создаю еще один скрипт и пишу тоже самое:
Код
gameObject.Find("MainCamera").GetComponent("MouseOrbit").ySpeed = 120;

Мне выдает ошибку:
Код
Assets/Project files/Scripts/lvl8/Perehodnik.js(20,59): BCE0019: 'ySpeed' is not a member of 'UnityEngine.Component'.

В чем проблема? Подскажите пожалуйста.
IzaronДата: Суббота, 22 Марта 2014, 22:31 | Сообщение # 2
Rammstein forever
Сейчас нет на сайте
GetComponent<MouseOrbit>()
robertonoДата: Суббота, 22 Марта 2014, 22:47 | Сообщение # 3
Чокнутый Кот
Сейчас нет на сайте
gameObject.Find("MainCamera").GetComponent<MouseOrbit>().ySpeed = 120;
AhmadДата: Суббота, 22 Марта 2014, 22:48 | Сообщение # 4
частый гость
Сейчас нет на сайте
Цитата Izaron ()
GetComponent<MouseOrbit>()

Не обязательно Muse Orbi это я как пример.
Допустим скрипт:
Код
gameObject.Find("Block").GetComponent("MyScript").Lol = 120;

Ну Lol переменная скрипта MyScript smile
IzaronДата: Суббота, 22 Марта 2014, 23:04 | Сообщение # 5
Rammstein forever
Сейчас нет на сайте
GetComponent<MyScript>()

Между скобочками имя класса
berilДата: Суббота, 22 Марта 2014, 23:44 | Сообщение # 6
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
Я на джаве никогда не кодил но возможно стоит брать имя класса а не строку?
убери кавычки в MyScript
gameObject.Find("Block").GetComponent(MyScript).Lol = 120;
или попробуй GetComponent<MyScript>()
ну или так
(gameObject.GetComponent("MyScript")as MyScript).Lol = 120;
все варианты должны работать




Накодил? Убери за собой!
Инвентарь в Unity(UI)
Инвентарь в Unity(GUI)


Сообщение отредактировал beril - Суббота, 22 Марта 2014, 23:49
AhmadДата: Воскресенье, 23 Марта 2014, 11:48 | Сообщение # 7
частый гость
Сейчас нет на сайте
Да спасибо. Но все же хочется узнать почему на одном работает так :
Код
gameObject.Find("Block").GetComponent("MyScript").Lol = 120;

А на другом выдает ошибку. Может кто знает?
robertonoДата: Воскресенье, 23 Марта 2014, 13:19 | Сообщение # 8
Чокнутый Кот
Сейчас нет на сайте
Ahmad, магия. Лучше не спрашивай и просто работай дальше. Я никогда в гет компонент не использую скобки. Только такое < >
allodsДата: Воскресенье, 23 Марта 2014, 15:59 | Сообщение # 9
почти ветеран
Сейчас нет на сайте
я никогда не ставлю кавычки в Гет Компонент
lentinantДата: Воскресенье, 23 Марта 2014, 20:01 | Сообщение # 10
ленивый программист
Сейчас нет на сайте
Если заглянем в референсе на страничку функции, узнаем, что если в качестве аргумента задавать непосредственно класс, то на выходе получим значение в виде этого же класса. Если же использовать в качестве аргумента строку, то функция вызывается как обобщенная - то есть, она возвращает значение в виде одного определенного класса. В случае с GetComponent это класс Component. В таком случае, мы можем получить только методы и переменные, которые есть в классе Component.

Когда-то тут будут ссылки на крутые проекты. Или нет.
PAX83Дата: Вторник, 25 Марта 2014, 18:38 | Сообщение # 11
был не раз
Сейчас нет на сайте
ИМХО проблема в том, что в одном скрипте есть #pragma strict, а в другом нет.

Сообщение отредактировал PAX83 - Вторник, 25 Марта 2014, 18:38
  • Страница 1 из 1
  • 1
Поиск:

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