StringBuilder를 사용하여
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[5, 9]; // 2차원 배열로 변경
Debug.LogFormat("현재 보드의 칸의 총 개수 : {0}", board.Length); // 전체 길이
Debug.LogFormat("행의 개수 : {0} ", board.GetLength(0));
Debug.LogFormat("열의 개수 : {0} ", board.GetLength(1));
StringBuilder sb = new StringBuilder();
for(int i = 0; i < board.GetLength(0); i++)
{
for(int j = 0; j < board.GetLength(1); j++)
{
sb.Append($"({i},{j})"); // StringBuilder에 문자열 추가
}
sb.AppendLine(); // 새로운 행 추가
}
Debug.Log(sb); // StringBuilder에 저장된 문자열을 출력
//배열의 요소에 넣기(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()
//{
//
//
//
//
//
//
//}
}
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();
}
private void CreateBoard()
{
//크기가 9인 BlockType의 1차원 배열 만들기
board = new Block[5, 9]; // 2차원 배열로 변경
PrintBoard();
//배열의 요소에 넣기(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.GetLength(0); i++)
{
for (int j = 0; j < board.GetLength(1); j++)
{
sb.Append($"({i},{j})"); // StringBuilder에 문자열 추가
}
sb.AppendLine(); // 새로운 행 추가
}
Debug.Log(sb); // StringBuilder에 저장된 문자열을 출력
}
}
'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] 1차원 배열을 만들고 블록을 생성하기 (0) | 2024.06.15 |