У меня есть скрипт, прикрепленный к led1, как показано на изображении ниже. Его единственная цель - обнаружить, когда я щелкаю светодиод и включаю дочерний светодиод led1. Обнаружение щелчка светодиода отлично работает с Raycast, однако попытка включения и выключения светодиода не работает с простым light.enabled = !light.enable
, но работает работать, если я сделаю light.enabled = true
или light.enabled = false
. Это меня так сильно смущает, потому что я не вижу причин для этого. Кто-нибудь знает, почему я не могу просто переключить его?
введите описание изображения здесь
Этот код никоим образом не работает для включения чего-либо.
void Update()
{
// On left mouse click
const int left_mouse_click = 0;
if (Input.GetMouseButtonDown(left_mouse_click))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, 600.0f))
{
if (hit.transform != null)
{
GameObject led = hit.transform.gameObject;
Light light = led.transform.GetChild(light_source_child).GetComponent<Light>();
// This code does not work for anything
light.enabled = !light.enabled;
}
Этот код работает для включения светодиода, но, конечно, не выключается снова.
void Update()
{
// On left mouse click
const int left_mouse_click = 0;
if (Input.GetMouseButtonDown(left_mouse_click))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit, 600.0f))
{
if (hit.transform != null)
{
GameObject led = hit.transform.gameObject;
Light light = led.transform.GetChild(light_source_child).GetComponent<Light>();
// Works for turning LED on
light.enabled = true;
}
Я реализовал решение, которое работает, но оно очень громоздко, так как мне приходится искать в словаре, хотя, казалось бы, очень просто добиться переключения объекта.