컴포넌트 추가하기
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 67개 중 32번째.
gameObject.AddComponent<T>()은 게임이 실행되는 동안 객체에 T 유형의 새 컴포넌트를 추가하고, 다음 줄에서 설정할 수 있도록 반환합니다. 이 컴포넌트는 GameObject에 속하며, 스크립트는 gameObject를 통해 GameObject에 접근합니다. 이 모닥불은 게임이 시작되면 스스로 따뜻한 주황색 빛을 냅니다:
void Start()
{
Light glow = gameObject.AddComponent<Light>();
glow.color = new Color(1f, 0.5f, 0f);
glow.intensity = 2f;
}이 방법으로 추가한 컴포넌트는 게임이 실행되는 동안 유지됩니다. 플레이를 중지하면 객체는 장면에 저장된 상태로 돌아가며, Light는 사라집니다. 직접 만든 스크립트도 컴포넌트입니다. gameObject.AddComponent<Spinner>()는 다른 스크립트처럼 실행을 시작하는 Spinner를 추가합니다.
대부분의 컴포넌트는 여러 번 추가할 수 있지만, 일부는 그렇지 않습니다. 객체는 Rigidbody를 최대 하나만 가질 수 있으며, 두 번째 Rigidbody를 요청하면 대신 Console에 오류가 표시됩니다. 여러 번 실행될 수 있는 코드는 컴포넌트를 추가하기 전에 객체에 이미 해당 컴포넌트가 있는지 확인합니다.
챌린지
중급코코넛이 야자수에 매달려 있습니다. Space를 누르면 나무가 흔들립니다. 코코넛에 Rigidbody가 추가되어 중력이 작용하고 모래 위로 떨어집니다.
- 처음 Space를 누르기 전에는 코코넛이 제자리에 매달려 있습니다.
- 코코넛에 Rigidbody가 아직 없을 때만 Space를 눌러 Rigidbody를 추가하므로, 그 이후에는 눌러도 아무 일도 일어나지 않습니다.
Play를 누르고 Space를 누른 다음 Check를 누르세요.
직접 해보기
using UnityEngine;
public class CoconutDrop : MonoBehaviour
{
void Update()
{
// Space: 코코넛에 아직 Rigidbody가 없다면 추가합니다
}
}
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.