Hi
I’m trying to write a script which will enable / disable light components attached to all game objects which have a specific tag. I can created the list of game objects ok with “findgameobjectswithtag” but how do I then access each game object and switch off the attached light? Something like the code below …
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UILightSwitch : MonoBehaviour {
public GameObject[] myGameObjectArray;
void Start()
{
myGameObjectArray = GameObject.FindGameObjectsWithTag("LightShort");
foreach (GameObject x in myGameObjectArray)
x.myLight = GetComponent<Light>();
x.myLight.SetActive(!x.myLight.activeSelf);
}
}
Ok I’ve fixed it. You tag all the GameObjects that hold the lights. Then add a new game object to hold this code changing the tag name as appropriate. Reference the new GameObject, the script and the function in the UI button. On clicking the button it will build an array of all the tagged game objects and enable/disable any light components attached to the game objects in the array.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class UILightSwitch : MonoBehaviour
{
public void TurnlightsOnOff()
{
GameObject[] myLights = GameObject.FindGameObjectsWithTag("ShortLight");
for (int i = 0; i < myLights.Length; ++i)
{
Debug.Log(i.ToString() + ": " + myLights*.name);*
myLights_.GetComponents()[0].enabled = !myLights*.GetComponents()[0].enabled;
}
}*_