

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.U2D;
public class AtlasManager : MonoBehaviour
{
    public static AtlasManager instance;
    public SpriteAtlas blockAtlas;
    //싱글톤
    private void Awake()
    {
        //AtlasManager 클래스의 인스턴스를 instance에 할당
        instance = this;
    }
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Block : MonoBehaviour
{
    public enum BlockType
    {
        Blue, Gray, Green, Pink, Yellow
    }
    public BlockType blockType;
    public SpriteRenderer spriteRenderer;
    public void Init(BlockType blockType)
    {
        this.blockType = blockType;
        //이미지 변경 
        ChangeSprite(blockType);
    }
    public void ChangeSprite(BlockType blockType)
    {
        //블록의 이름을 넣어서 아틀라스에서 같은 이름인 sprite를 찾고 할당
        Sprite sp =
            AtlasManager.instance.blockAtlas.GetSprite(blockType.ToString());
        spriteRenderer.sprite = sp;
    }
    public void SetPosition(int x)
    {
        Vector2 pos = transform.position;
        pos.x = x;
        transform.position = pos;
    }
}
using System.Collections;
using System.Collections.Generic;
using System.Text;
using Unity.VisualScripting;
using UnityEngine;
public class Test : MonoBehaviour
{
    private Block[] board; //1차원 배열이 Block들을 관리
    public GameObject blockPrefab;
    void Start()
    {
        CreateBoard();
        PrintBoard();
    }
    private void CreateBoard()
    {
        //크기가 9인 BlockType의 1차원 배열 만들기
        board = new Block[9];
        //배열의 요소에 넣기(0~8까지의 랜덤한 값을 BlockType으로 바꿔서)
        for (int i = 0; i < board.Length; i++)
        {
            Block.BlockType blockType = (Block.BlockType)Random.Range(0, 5);
            //블록 프리팹 인스턴스를 생성
            GameObject blockGo = Instantiate(blockPrefab);
            //생성된 프리팹을 블록클래스의 블록에 할당
            Block block = blockGo.GetComponent<Block>();
            block.Init(blockType);
            block.SetPosition(i);
        }
    }
    private void PrintBoard()
    {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < board.Length; i++)
        {
            sb.Append($"{board[i]}");
        }
        Debug.Log(sb);
    }
}
https://learn.microsoft.com/ko-kr/dotnet/api/system.text.stringbuilder?view=net-8.0
StringBuilder 클래스 (System.Text)
변경할 수 있는 문자열을 나타냅니다. 이 클래스는 상속될 수 없습니다.
learn.microsoft.com


'Solo > Puzzle' 카테고리의 다른 글
| [3Match Puzzle] 블록 에디터 만들어서 제거 하기 (0) | 2024.06.17 | 
|---|---|
| [3Match Puzzle] 메인 카메라 위치 변경 하기 (0) | 2024.06.16 | 
| [3Match Puzzle] 보드 스크립트 만들어서 블록들 생성 시 부모로 묶기 (0) | 2024.06.16 | 
| [3Match Puzzle] 2차원 배열로 보드 만들기(블록 만들기) (0) | 2024.06.16 | 
| [3Match Puzzle] 2차원 배열을 만들기 (0) | 2024.06.16 | 














