2016-05-11 5 views
0

Итак, я пытаюсь получить доступ к компоненту скрипта в другом GameObject, но для этого быстрее у меня есть переменная Component.GetComponent in Unity (C#)

Component map = GameObject.FindWithTag("Map").GetComponent<Map>(); 

Теперь, когда я хочу, чтобы ссылаться на переменную внутри компонента карты

map.selected = true; 

это дает мне ошибку, что

UnityEngine.Component не содержит определения для выбранного».

Выбрано является публичным шрифтом в сценарии карты, прикрепленным к t он Map GameObject.

Когда я иду с длинным путем

GameObject.FindWithTag("Map").GetComponent<Map>().selected = true; 

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

ответ

2

Это происходит потому, что вы инициируете свою переменную map как компонент, поэтому компилятор будет искать выбранный атрибут в классе Component.
попробовать что-то вроде этого:
MapScript map = GameObject.FindWithTag("Map").GetComponent<MapScript>();
(Заменить MapScript с фактическим именем этого сценария.)
Я не совсем уверен, если это точный синтаксис будет работать, и у меня нет никакого способа тестирования этого на данный момент , поэтому, пожалуйста, попробуйте посмотреть, работает ли он. Если это не так, я буду изучать это, как только я буду дома.

+0

Он решил проблему, спасибо :) –

Смежные вопросы