Script voor de objectpooler


using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class ObjectPooler : MonoBehaviour {
    public GameObject pooledObject;
    public int pooledAmount;
    List <GameObject> pooledObjects;
    // Use this for initialization
    void Start ()
    {
        pooledObjects = new  List <GameObject>();
        for (int i = 0; i < pooledAmount; i++)
        {
            GameObject obj = Instantiate((GameObject)pooledObject);
            obj.SetActive(false);
            pooledObjects.Add(obj);
        }
    }
    public GameObject GetPooledObject ()
    {
        for (int i = 0; i < pooledObjects.Count; i++)
        {
            if(!pooledObjects[i].activeInHierarchy)
            {
                return pooledObjects[i];
            }
        }
        GameObject obj = Instantiate((GameObject)pooledObject);
        obj.SetActive(false);
        pooledObjects.Add(obj);
        return obj;
    }
}
PlatformGenerator script

using UnityEngine;
using System.Collections;

public class PlatformGenerator : MonoBehaviour {
    public GameObject platform;
    public Transform platformGeneratePoint;
    public float distanceBetween;
    public float timerSwitchPlatorm;
    private float PlatformWith;
    bool platformCheck;
    private int platformSelector;
    //public GameObject[] thePlatforms;
    private float[] platformWihts;
    public ObjectPooler[] theObjectPools;
    //private CoinGenerator theCoinGenerator;
    //public float randomCoinSpawn;

    // Use this for initialization
    void Start ()
    {
        //PlatformWith = platform.GetComponent<BoxCollider>().size.x;
        platformWihts = new float[theObjectPools.Length];
        for (int i = 0; i < theObjectPools.Length; i++)
        {
            platformWihts[i] = theObjectPools[i].pooledObject.GetComponent<BoxCollider>().size.x;
        }
        //theCoinGenerator = FindObjectOfType<CoinGenerator>();
        timerSwitchPlatorm = 1;
        platformSelector = 1;
    }
    
    // Update is called once per frame
    void Update ()
    {
        //Debug.Log("selected platform: " + platformSelector + ", timer: " + timerSwitchPlatorm);
        if (transform.position.z < platformGeneratePoint.position.z)
        {
            if (timerSwitchPlatorm > 0)
            {
                timerSwitchPlatorm -= Time.deltaTime;
            }
            else
            {
                platformSelector = Random.Range(0, theObjectPools.Length );
                timerSwitchPlatorm = 1;
            }
            transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + (platformWihts[platformSelector] / 2) + distanceBetween);
            //Instantiate(/*platform*/thePlatforms[platformSelector], transform.position, transform.rotation);
            switch (platformSelector)
            {
                case 0:
            GameObject newPlatform = theObjectPools[platformSelector].GetPooledObject();
               
            newPlatform.transform.position = transform.position;
            newPlatform.transform.rotation = transform.rotation;
            newPlatform.SetActive(true);
                
            transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + (platformWihts[platformSelector] / 2));
            
               /*
            if (Random.Range(0f, 10f) < randomCoinSpawn)
            {
                theCoinGenerator.SpwanCoins(new Vector3(transform.position.x, transform.position.y + 1f, transform.position.z));
                gameObject.SetActive(true);
            }
            */
                    break;
                case 1:
                    GameObject newPlatform1 = theObjectPools[platformSelector].GetPooledObject();
                    newPlatform1.transform.position = transform.position;
                    newPlatform1.transform.rotation = transform.rotation;
                    newPlatform1.SetActive(true);

                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + (platformWihts[platformSelector] / 2));

                    /*
                 if (Random.Range(0f, 10f) < randomCoinSpawn)
                 {
                     theCoinGenerator.SpwanCoins(new Vector3(transform.position.x, transform.position.y + 1f, transform.position.z));
                     gameObject.SetActive(true);
                 }
                 */
                    break;
                case 2:
                    GameObject newPlatform2 = theObjectPools[platformSelector].GetPooledObject();
                    newPlatform2.transform.position = transform.position;
                    newPlatform2.transform.rotation = transform.rotation;
                    newPlatform2.SetActive(true);

                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + (platformWihts[platformSelector] / 2));
                    /*
                    if (Random.Range(0f, 10f) < randomCoinSpawn)
                        {
                            theCoinGenerator.SpwanCoins(new Vector3(transform.position.x, transform.position.y + 1f, transform.position.z));
                            gameObject.SetActive(true);
                        }
                    */
                    break;
                case 3:
                    GameObject newPlatform3 = theObjectPools[platformSelector].GetPooledObject();
                    newPlatform3.transform.position = transform.position;
                    newPlatform3.transform.rotation = transform.rotation;
                    newPlatform3.SetActive(true);

                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + (platformWihts[platformSelector] / 2));

                    /*
                if (Random.Range(0f, 10f) < randomCoinSpawn)
                {
                    theCoinGenerator.SpwanCoins(new Vector3(transform.position.x, transform.position.y + 1f, transform.position.z));
                    gameObject.SetActive(true);
                }
                */
                    break;
                case 4:
                    GameObject newPlatform4 = theObjectPools[platformSelector].GetPooledObject();
                    newPlatform4.transform.position = transform.position;
                    newPlatform4.transform.rotation = transform.rotation;
                    newPlatform4.SetActive(true);

                    transform.position = new Vector3(transform.position.x, transform.position.y, transform.position.z + (platformWihts[platformSelector] / 2));
                    /*
                            if (Random.Range(0f, 10f) < randomCoinSpawn)
                            {
                                theCoinGenerator.SpwanCoins(new Vector3(transform.position.x, transform.position.y + 1f, transform.position.z));
                                gameObject.SetActive(true);
                            }
                            */
                    break;
            } 
        }
    }   
}

De Code
Published:

Project Made For

De Code

Published: