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
|
|
| |
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 |
|
| |