SpriteRenderer is not disabled(working with Lists)
Hi, I'm quite new to unity and C# programming and I've run into a problem, which seems to be impossible to solve(for me). Basically what I want to do and what doesn't work: I create a gameobjects list, where I store all my instantiated orbits and planets(both have their sprite renderers and are prefabs). Later there is a little distance check(player object is correctly found and the if-clause == true) and then I want to scroll through the list and disable all SpriteRenderers for the objects found in the list(finally I disable the main objects sprite renderer). The result is that the main objects renderer is disabled, but noone from the list is changed. Unity doesn't throw any errors or anything like that. And the code is here(function, which doesn't work is in the bottom [last if-clause]) using UnityEngine; using System.Collections; using System.Collections.Generic;
public class genSolarSys : MonoBehaviour {
public GameObject hot;
public GameObject normal;
public GameObject cold;
public GameObject orbiitPre;
private GameObject player;
private int currentPlanet = 0;
private float currentDistance = 5;
private int planetsInSys;
private bool turnedOff = false;
List<GameObject> planets = new List<GameObject>();
// Use this for initialization
void Start () {
planetsInSys = Random.Range(1,4);
player = GameObject.Find("playerShip");
}
// Update is called once per frame
void Update () {
//Loo planeedid
if(planetsInSys > currentPlanet){
currentDistance += Random.Range(5,12);
Quaternion randomDirection = Quaternion.Euler(0f,0f,Random.Range(0f, 360f));
Vector3 planetPos = transform.position + (randomDirection * new Vector3(0f,currentDistance,0f));
//Planet's rotation
Vector3 planetRotation = transform.position-planetPos;
planetRotation.Normalize();
float zAngle = Mathf.Atan2(planetRotation.y,planetRotation.x) * Mathf.Rad2Deg - 90f;
//Orbiit
GameObject newOrbit = Instantiate(orbiitPre,transform.position,Quaternion.identity) as GameObject;
newOrbit.transform.localScale = new Vector3(currentDistance*2,currentDistance*2,0f);
planets.Add(newOrbit);
GameObject createPlanet = Instantiate(normal,planetPos, Quaternion.Euler (0f,0f,zAngle)) as GameObject;
currentPlanet += 1;
planets.Add(createPlanet);
}
//Lülita end sisse ja välja arvestades kosmoselaeva kaugust
if(Vector2.Distance(transform.position,player.transform.position) > 200 && turnedOff == false){
for(int i = 0; i < planets.Count; i++){
planets[i].GetComponent<SpriteRenderer>().enabled = false;
}
GetComponent<SpriteRenderer>().enabled = false;
turnedOff = true;
}
}
}
Any help is truly appriciated