Menu
CoddyTech

컴포넌트 추가하기

Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 46번째.

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에 Can't add component 'Rigidbody' 경고가 표시됩니다. 여러 번 실행될 수 있는 코드는 컴포넌트를 추가하기 전에 객체에 이미 해당 컴포넌트가 있는지 확인합니다.

challenge icon

챌린지

중급

스페이스 키를 누르면 야자수가 흔들리고 코코넛이 떨어집니다.

  1. Update()에서 Input.GetKeyDown(KeyCode.Space)일 때 gameObject.AddComponent<Rigidbody>()로 Rigidbody를 추가하세요.
  2. 코코넛에 Rigidbody가 없을 때만 추가하세요: !TryGetComponent(out Rigidbody rb). 스페이스 키를 두 번째로 눌러도 Rigidbody가 추가로 생기지 않습니다.

‘플레이’를 누른 다음 스페이스 키를 누르세요. 코코넛이 모래 위로 떨어집니다. 그런 다음 ‘확인’을 누르세요.

직접 해보기

using UnityEngine;

public class CoconutDrop : MonoBehaviour
{
    void Update()
    {
        // Space: 코코넛에 아직 Rigidbody가 없다면 추가합니다
    }
}

Unity 스크립팅 기초의 모든 레슨

직접 연습해 보세요: Unity 플레이그라운드