Inspector에서 참조 설정하기
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 67개 중 29번째.
필드에는 다른 객체를 넣을 수 있습니다. Transform 또는 GameObject와 같은 타입을 지정하면 Inspector에 빈 슬롯이 표시되고, Hierarchy에서 객체를 끌어다 놓아 채울 수 있습니다. 이 카메라 스크립트는 player에 끌어다 놓은 객체를 따라가며, 그 객체보다 3유닛 위, 6유닛 뒤에 머뭅니다:
public Transform player;
void Update()
{
transform.position = player.position + new Vector3(0, 3, -6);
}비어 있는 슬롯은 None으로 표시되며, 해당 슬롯을 사용하는 첫 번째 줄은 매 프레임 다음 오류를 발생시킵니다: UnassignedReferenceException: The variable player of CameraFollow has not been assigned. 메시지의 다음 줄에는 어떻게 해야 하는지 나와 있습니다: You probably need to assign the player variable of the CameraFollow script in the inspector. 필드와 스크립트의 이름이 명시되어 있으므로 어떤 슬롯을 채워야 하는지 알 수 있습니다.
일부 스크립트는 슬롯이 비어 있어도 작동해야 합니다. Unity에서는 빈 슬롯이 null과 동일하게 비교되므로, 이런 스크립트는 사용하기 전에 확인합니다. Update()의 줄을 if (player != null)로 감싸면 플레이어가 없는 카메라는 오류를 발생시키지 않고 제자리에 머뭅니다.
챌린지
중급각 경비병은 각자의 초소로 걸어갑니다. 씬에서 Guard1의 Inspector는 Post1 오브젝트를 post라는 필드에 넣습니다. Guard2의 초소는 아직 만들어지지 않아 post 슬롯이 비어 있습니다.
- Guard 스크립트에
post라는 이름의Transform필드를 추가하세요. - 경비병은 초소가 나중에 이동하더라도 초소 위에 멈출 때까지 초소의 위치로 초당
speed유닛의 속도로 걸어갑니다. - 초소 슬롯이 비어 있는 경비병은 오류 없이 제자리에 머뭅니다.
Play를 누르고, Hierarchy에서 각 경비병을 선택해 Post 슬롯을 확인한 다음 Check를 누르세요.
직접 해보기
using UnityEngine;
public class Guard : MonoBehaviour
{
// post: 이 경비병이 걸어갈 Transform으로, Inspector에서 설정합니다
public float speed = 2f;
void Update()
{
// speed의 속도로 post를 향해 걸어갑니다. post 슬롯이 비어 있는 경비병은 제자리에 머뭅니다.
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.