- Home /
 
               Question by 
               SolidSlish · Dec 03, 2019 at 06:37 PM · 
                prefabspawntiledeleteobject pool  
              
 
              How to Use Object Pooling? Is my Script Wrong?
I'm getting an error message in my script and I just don't know what to do. Can I get some help?
Error Message: Assets\Scripts\TileManager.cs(45,58): error CS7036: There is no argument given that corresponds to the required formal parameter 'value' of 'Dictionary>.Add(int, List)'
 using System.Collections;
 using UnityEngine;
 using System.Collections.Generic;
 
 public class TileManager : MonoBehaviour
 {
     public GameObject[] tilePrefabs;
 
     Dictionary<int, List<GameObject>> tilePool = new Dictionary<int, List<GameObject>>();
 
     private Transform playerTransform;
     private float spawnZ = -10f;
     private float tileLength = 27.7016f;
     private float safeZone = 22.5f;
     private int amnTilesOnScreen = 4;
     private int lastPrefabIndex = 0;
 
     private List<GameObject> activeTiles;
 
     // Start is called before the first frame update
     private void Start()
     {
         activeTiles = new List<GameObject>();
         playerTransform = GameObject.FindGameObjectWithTag("Player").transform;
 
         for (int i = 0; i < amnTilesOnScreen; i++)
         {
             if (i < 2)
                 SpawnTile(0);
             else
                 SpawnTile();
         }
     }
 
     // Update is called once per frame
     private void Update()
     {
         if (playerTransform.position.z - safeZone > (spawnZ - amnTilesOnScreen * tileLength))
         {
             SpawnTile();
             DeleteTile();
         }
     }
 
     private void SpawnTile(int prefabIndex = -1)
     {
         //make sure prefabIndex is set correctly. 
 
         if (!tilePool.ContainsKey(prefabIndex)) tilePool.Add(new List<GameObject>());
         GameObject go = tilePool[prefabIndex].Find(x => !x.activeSelf); // find disabled gameobject to reuse
         if (go == null)
         {
             go = Instantiate(tilePrefabs[prefabIndex]) as GameObject;
             tilePool[prefabIndex].Add(go);
         }
         //set position for go and else
     }
 
     private void DeleteTile()
     {
         activeTiles[0].SetActive(false);//disable for reuse
         activeTiles.RemoveAt(0);
     }
 
     private int RandomPrefabIndex()
     {
         if (tilePrefabs.Length <= 1)
             return 0;
 
         int randomIndex = lastPrefabIndex;
         while (randomIndex == lastPrefabIndex)
         {
             randomIndex = Random.Range(0, tilePrefabs.Length);
         }
 
         lastPrefabIndex = randomIndex;
         return randomIndex;
     }
 
 }
               Comment
              
 
               
              Your answer
 
 
             Follow this Question
Related Questions
Unity Crashes When Spawning Prefab 2 Answers
Make a object spawn 1 Answer
UNet Parent System 0 Answers
Preventing first instance of object from starting on screen 1 Answer
Help: script that worked don't work with Unity 3.5 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                