Почему нет Light.color?

#c# #unity3d

#c# #unity-игровой движок

Вопрос:

Я создаю игру для задания, используя Unity. Я хочу, чтобы индикатор менял цвет, когда рядом с ним оказывается определенный объект.

Я получаю сообщение об ошибке, в котором говорится

«Ошибка CS1061 ‘Light’ не содержит определения для ‘color’ и не удалось найти метод расширения ‘color’, принимающий первый аргумент типа ‘Light’ (вам не хватает директивы using или ссылки на сборку?)»

На каждом веб-сайте, который я читал, говорилось, что есть Light.color , включая документацию Unity. У каждого из них разные проблемы, касающиеся Light.color .

Код:

 Light lc = other.gameObject.transform.parent.gameObject.GetComponent<Light>();
lc.color = Color.green;
  

Все, что я хочу, это изменить цвет light без получения ошибки.

Ответ №1:

По умолчанию новые скрипты, созданные с помощью редактора Unity, будут иметь «using UnityEngine» в начале.

‘Light’, на который вы ссылаетесь, тоже является собственным объектом Unity, и поэтому вам либо нужно включить «использование UnityEngine», либо ссылаться на объект как UnityEngine.Light

Это не их вина, что они не упоминают об этом в документации, поскольку предполагается, что все в документации является частью API UnityEngine.

Ответ №2:

Nvmd, исправлено

если у кого-то еще возникает эта проблема, это, вероятно, потому, что Unity забыл упомянуть в своей документации, что это: UnityEngine.Light not: Светлый

Комментарии:

1. Возможно, они ожидают, что у вас будет using UnityEngine;

2. Если вам нужно писать, UnityEngine.Light находясь using UnityEngine в верхней части вашего скрипта, это означает, что вы создали свой собственный Light класс, «скрывающий» Unity. Поэтому, пожалуйста, не вините Unity.