예제 #1
0
    void Awake()
    {
        GetComponent <TilemapRenderer>().enabled = false;
        Tilemap             tilemap = GetComponent <Tilemap>();
        List <TargetScript> targets = new List <TargetScript>();

        Dictionary <string, TargetScript> targetPrefabs =
            FindObjectOfType <LevelManager>().targetPrefabs;

        int xSize = tilemap.cellBounds.xMax - tilemap.cellBounds.xMin + 1;
        int ySize = tilemap.cellBounds.yMax - tilemap.cellBounds.yMin + 1;

        targetGrid = new TargetScript[xSize][];

        for (int x = 0; x < xSize; x++)
        {
            targetGrid[x] = new TargetScript[ySize];

            for (int y = 0; y < ySize; y++)
            {
                Vector3Int tilePos = new Vector3Int(
                    x + tilemap.cellBounds.xMin, y + tilemap.cellBounds.yMin, 0);
                TileBase tile = tilemap.GetTile(tilePos);
                if (tile != null && targetPrefabs.ContainsKey(tile.name))
                {
                    TargetScript target = Instantiate <TargetScript>(targetPrefabs[tile.name],
                                                                     tilemap.GetCellCenterWorld(tilePos), Quaternion.identity);
                    target.transform.parent = transform;
                    targetGrid[x][y]        = target;
                    target.SetPos(x, y);
                    target.SetColor(targetColors[Random.Range(0, targetColors.Length)]);
                    targets.Add(target);
                }
            }
        }

        FindObjectOfType <LevelManager>().SetTargets(targets);
    }