Tidy Tile Mapper‎ > ‎Runtime API‎ > ‎AssetPool‎ > ‎

Instantiate

Instantiates a GameObject from the Asset Pool (or using the usual GameObject.Instantiate function if not).

Definition:

GameObject Instantiate(GameObject prefab)

Return valueDescription
GameObjectThe instantiated GameObject from the Asset Pool.

ArgumentDataTypeDescription
prefabGameObjectThe prefab that you wish to instantiate.


GameObject Instantiate(string prefabName)


Return value Description
GameObject The instantiated GameObject from the Asset Pool.

Argument DataType Description
prefabNamestringThe name of the object from the Asset Pool that you wish to instantiate.

Example:

using UnityEngine;
using DopplerInteractive.TidyTileMapper.Utilities;

public class MapDemo : MonoBehaviour {
    
  //This is the map that we will create and subsequently modify
  BlockMap map = null;
  
  //Our map properties - correlate directly to the map properties in the Editor Extension
  public Vector3 tileScale = new Vector3(1.0f,1.0f,1.0f);
  public string mapName = "Our demonstration map";
  public BlockMap.GrowthAxis growthAxis = BlockMap.GrowthAxis.Up;
  
  //The dimensions of our demo map
  public int mapWidth;
  public int mapHeight;
  
  //This is the Block that we will be using to populate our map
  public Block blockPrefab;
  
  void Awake(){
    
    //Step one: Let's create a map
    map = BlockUtilities.CreateBlockMap(mapName, tileScale, 5, 5, growthAxis);
    
    //Let's enable pooling and kill many demonstration birds with one demonstration stone
    AssetPool.EnablePooling();
    
    GenerateMap();
    
  }
  
  void Update(){
    
    if(Input.GetMouseButtonDown(0)){
      
      //We're going to cast a ray, see if we hit a block, and toggle it
      
      Ray r = Camera.mainCamera.ScreenPointToRay(Input.mousePosition);
      
      RaycastHit hitInfo;
      
      if(Physics.Raycast(r,out hitInfo,mapHeight*1.5f)){
        
        Block b = hitInfo.collider.GetComponent<Block>();
        
        if(b != null){
          
          Block newBlock = null;
          
          if(b.isNullBlock){
            //This block is empty, so make it full  
            GameObject o = AssetPool.Instantiate(blockPrefab.gameObject);
            newBlock = o.GetComponent<Block>();
            
            //Done, add the new block to the map
            BlockUtilities.AddBlockToMap(map,newBlock,false,0,false,b.x,b.y,b.depth,false,false);  
                    
          }
          else{
            //This block is not empty, so make it empty
            BlockUtilities.RemoveBlockFromMap(map,b.x,b.y,b.depth,true,false);
        
          }
          
        }
        
      }
      
    }
    
  }
  
  void GenerateMap(){
    
    //Let's build a map
    for(int x = 0; x < mapWidth; x++){
      
      for(int y = 0; y < mapHeight; y++){
        
        //Controversially, we're going to populate our map entirely with blocks at first
        //After this, we will click on these blocks and replace them with empty blocks
        
        GameObject o = AssetPool.Instantiate(blockPrefab.gameObject);
        Block newBlock = o.GetComponent<Block>();
        
        BlockUtilities.AddBlockToMap(map,newBlock,false,0,false,x,y,0,false,false);
        
      }
      
    }

    BlockUtilities.RefreshMap(map,true);
    
  }
    
}


Comments