Asign prefab to game object based on tag
Hi there, I have three empty GameObjects. 
 public GameObject[] animals; and 10 different animal prefabs.
 I want from a Random animal prefab Spawner OnTriggerEnter2D to assign these three GameObject a prefab based on prefab tag 
Answer by streeetwalker · Sep 26, 2020 at 05:29 AM
Hi OM3TRIX, there are several ways to go about this and conceptually they are all similar:
 1. you create collection - an array, list, or dictionary - of all the prefabs at the start of the game
 2. you create an collection - an array, list, or dictionary - the tags at the start of the game
 3. you associate the two collections by element index or key (in the case of dictionary)
 4. when you want to instantiate a specific game object, you use the tag collection to index or key to get the respective prefab in the prefab collection.
if it were me, I would use a dictionary because it handles both tag and prefab in one collection:
 for example, in pseudo code:
 // declare the collection
 Dictionary<string, GameObject>  prefabDictionary = new Dictionary<string, GameObject>;
     
  // assumes catPrefab and dogPrefab are references to the prefab objects
 // load up the collection, for each prefab you'll repeat this, for example:
 prefabDictionary.Add( "cat", catPrefab );
 prefabDictionary.Add( "dog", dogPrefab );
    
 // then, for example, to get an element to instantiate, in your example
 animals[0] = (GameObject) Instantiate( prefabDictionary["cat"] );
 animals[1] = (GameObject) Instantiate( prefabDictionary["dog"] );
    
 // or, for example, assuming there is a key "horse" in the dictionary
 string aTag = "horse"
 animals[1] = (GameObject) Instantiate( prefabDictionary[aTag] );
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                