All objects spawns with the same color but their material is different! HELP!
Hello! I am trying to make a pooling system for some obstacles. More exactly, i make a game in which you should to dodge some obstacle who come to you. The obstacles have different colors, different materials. The problem is when game starts, all obstacle are spawned with the same color. Before making the pooling system all obstacles spawned normally, in different colors. For 2 days I try to solve the issue, but i cant solve it! I tried to make something with tags, but in vain! Down are the scripts and a some pictures with the game! Thanks in advance!
Picture:
Pooling System:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class ObstPoolingSystem : MonoBehaviour {
public static ObstPoolingSystem current;
public GameObject pooledObstacle;
public int pooledAmount = 1;
public bool willGrow = true;
public List<GameObject> pooledObstacles;
void Awake()
{
current = this;
}
void Start()
{
pooledObstacles = new List<GameObject>();
for (int i = 0; i < pooledAmount; i++)
{
GameObject obj = (GameObject)Instantiate(pooledObstacle);
obj.SetActive(false);
pooledObstacles.Add(obj);
}
}
public GameObject GetPooledObject()
{
for (int i = 0; i < pooledObstacles.Count; i++)
{
if (!pooledObstacles[i].activeInHierarchy)
{
return pooledObstacles[i];
}
}
if (willGrow)
{
GameObject obj = Instantiate(pooledObstacle);
pooledObstacles.Add(obj);
return obj;
}
return null;
}
}
Spawn Script:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class ObstSpawnPoolingSys : MonoBehaviour
{
public float spawnTime;
void Start()
{
InvokeRepeating("Spawn", spawnTime, spawnTime);
}
void Spawn()
{
GameObject obj = ObstPoolingSystem.current.GetPooledObject();
if (obj == null) return;
obj.transform.position = transform.position;
obj.transform.rotation = transform.rotation;
obj.SetActive(true);
}
}
Destroyer:
using UnityEngine;
using System.Collections;
public class ObstDestroyer : MonoBehaviour
{
void OnEnable()
{
Invoke("Destroy", 7f);
}
void Destroy()
{
gameObject.SetActive(false);
}
void OnDisable()
{
CancelInvoke();
}
}
Your answer
Follow this Question
Related Questions
Abstracting the generic spawn function 0 Answers
Need a generic pooling system for shooting game 2 Answers
Pooling different kind of abilities that can change in runtime. 0 Answers
Instantiate GameObject Error I dont know whats wrong with it seems right to me 1 Answer
How to reuse prefab bullet when it hits a collider using pool 0 Answers