그리드에 생성하기
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 64번째.
반복문 안의 반복문은 격자의 모든 셀을 방문합니다. 바깥쪽 반복문이 열을 선택하고, 안쪽 반복문이 해당 열을 따라 이동합니다. 그 안에 Instantiate를 넣으면 모든 셀에 오브젝트가 생성됩니다. 너비가 2유닛인 타일을 사용해 3×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 프리팹 벽을 만드세요.
Start()에서c를 0부터 3까지 반복하고, 그 안에서r을 0부터 4까지 반복하세요.- 안쪽 반복문에서
Instantiate(brickPrefab, new Vector3(-1.5f + c, 0.25f + r * 0.5f, 0), Quaternion.identity, transform)을 호출하세요. 마지막 인수는 각 벽돌을 Wall의 자식으로 만듭니다.
‘플레이’를 누르세요. 벽돌 20개로 된 벽이 바닥에 세워집니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class WallBuilder : MonoBehaviour
{
public GameObject brickPrefab;
void Start()
{
// 벽돌을 4열 5행으로 배치하고, 각 벽돌은 이 Wall의 자식으로 만듭니다
}
}
Unity 스크립팅 기초의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드