Inspector에서 참조하기
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 43번째.
필드에는 다른 객체를 담을 수 있습니다. 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)로 감싸면 플레이어가 없는 카메라는 오류를 발생시키지 않고 현재 위치에 머뭅니다.
챌린지
중급각 경비병을 Inspector가 지정하는 초소로 보내세요.
public Transform post;필드를 추가하세요. Guard1의 슬롯에는 Post1을 넣고, Guard2의 슬롯은 비워 두세요.Update()에서post == null이면return;하여 초소가 없는 경비병은 제자리에 머물게 하세요.- 그런 다음
Vector3.MoveTowards(transform.position, post.position, speed * Time.deltaTime)를 사용해 이동시키세요.
‘플레이’를 누르세요. Guard1은 초소로 걸어가고 Guard2는 기다립니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class Guard : MonoBehaviour
{
// post: 이 경비병이 걸어갈 대상인 Transform으로, Inspector에서 설정합니다
public float speed = 2f;
void Update()
{
// speed로 post까지 걸어갑니다. post 슬롯이 비어 있는 경비병은 제자리에 머뭅니다.
}
}
Unity 스크립팅 기초의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드