그리드에 생성하기
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 67개 중 50번째.
루프 안에 루프가 있으면 그리드의 모든 셀을 방문합니다. 바깥쪽 루프가 열을 선택하고, 안쪽 루프가 그 열을 따라 이동합니다. 그 안에 Instantiate를 넣으면 모든 셀에 오브젝트가 생성됩니다. 너비가 2유닛인 타일을 사용해 3 x 3 바닥을 만들므로, 타일은 서로 2유닛씩 떨어져 배치됩니다:
public GameObject tilePrefab;
void Start()
{
for (int x = 0; x < 3; x++)
{
for (int z = 0; z < 3; z++)
{
Vector3 spot = new Vector3(x * 2, 0, z * 2);
Instantiate(tilePrefab, spot, Quaternion.identity, transform);
}
}
}타일은 x = 0, 2, 4 및 z = 0, 2, 4 위치에 배치됩니다. 총 9개이며, (0, 0, 0)부터 (4, 0, 4)까지입니다. 루프는 Start()에서 한 번 실행됩니다. Update()에서 실행하면 매 프레임마다 타일이 9개씩 더 생성됩니다.
네 번째 인수는 부모입니다. 부모가 없는 Tile(Clone) 오브젝트 9개는 Hierarchy를 복잡하게 만들지만, transform을 전달하면 오브젝트가 이 스크립트가 붙어 있는 오브젝트인 Floor 아래에 정리되므로, 접어서 숨기거나 함께 이동하거나 함께 삭제할 수 있습니다. 전달하는 위치는 여전히 월드 위치입니다.
챌린지
중급지면에 세워진 벽돌 4개 너비, 5개 행 높이의 벽을 Brick 프리팹으로 만드세요. 벽돌은 너비가 1단위이고 높이가 0.5단위입니다.
- 4개의 열은 x = -1.5, -0.5, 0.5 및 1.5에 있습니다.
- 맨 아래 행은 지면에 놓이므로, 해당 행의 벽돌은 y = 0.25에 있습니다. 각 행은 바로 아래 행보다 0.5만큼 위에 있습니다.
- 모든 벽돌은 z = 0에 있고, 회전이 없으며, 이 스크립트가 붙어 있는 오브젝트인 Wall의 자식입니다.
Play를 눌러 벽을 확인한 다음 Check를 누르세요.
직접 해보기
using UnityEngine;
public class WallBuilder : MonoBehaviour
{
public GameObject brickPrefab;
void Start()
{
// 벽돌을 4열 5행으로 배치하며, 각 벽돌은 이 Wall의 자식입니다
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.