TIL(2024,05,30) Unity 다시 돌아보기

김보근·2024년 5월 30일

Unity

목록 보기
12/113
post-thumbnail

Unity

GameObject와 Component

GameObject: Unity의 기본 단위입니다. 모든 게임 세계에서 표현되는 개체입니다. 예를 들어, 캐릭터, 장애물, 아이템 등 모든 것은 GameObject입니다.

Component: GameObject의 기능을 정의하고 확장하는 데 사용됩니다. 각각의 Component는 특정 기능을 담당합니다. Rigidbody, Collider, Renderer 등이 이에 해당합니다. 예를 들어, Rigidbody Component는 물리적 특성을 제어하며, Collider는 충돌을 감지합니다.

// Rigidbody Component를 추가하는 예시
Rigidbody rb = gameObject.AddComponent<Rigidbody>();

Transform

Transform: GameObject의 위치, 회전 및 크기를 나타냅니다. 이것은 모든 GameObject에 기본적으로 포함되어 있으며, 게임 객체의 위치, 회전 및 크기를 제어하는 데 사용됩니다.

// 위치를 이동하는 예시
transform.position = new Vector3(0, 0, 0);

Rigidbody

Rigidbody: 물리 시뮬레이션을 적용하기 위해 GameObject에 추가되는 Component입니다. Rigidbody가 있는 GameObject는 물리 엔진에 의해 영향을 받아 이동 및 회전됩니다.

// Rigidbody의 질량을 설정하는 예시
rb.mass = 1.0f;

Collider

Collider: 충돌 감지를 가능하게 하는 Component입니다. Collider가 있는 두 GameObject가 서로 충돌할 때 물리 엔진이 이를 감지하고 적절한 반응을 수행합니다.

// BoxCollider를 추가하는 예시
BoxCollider boxCollider = gameObject.AddComponent<BoxCollider>();

스크립트 (Script)

스크립트: Unity에서 GameObject의 동작을 제어하는 데 사용되는 코드입니다. C# 언어로 작성되며, GameObject에 추가하여 원하는 동작을 구현합니다.

// 이동을 제어하는 스크립트 예시
public class MoveScript : MonoBehaviour
{
    public float speed = 5.0f;

    void Update()
    {
        transform.Translate(Vector3.forward * speed * Time.deltaTime);
    }
}

주요 생명주기 메서드 (Lifecycle Methods)

Start(), Update(), FixedUpdate(), LateUpdate() 등의 생명주기 메서드는 스크립트가 GameObject에 추가될 때 자동으로 호출됩니다. 이를 활용하여 초기화, 로직 처리, 물리 연산 등을 수행합니다.

void Start()
{
    Debug.Log("게임 시작");
}

void Update()
{
    // 매 프레임마다 호출됨
}

씬 (Scene)과 프리팹 (Prefab)

씬: 게임의 한 부분을 나타내는 환경입니다. 여러 씬을 조합하여 게임의 다양한 장면과 상황을 만듭니다.

프리팹: 게임에서 재사용 가능한 GameObject를 나타냅니다. 프리팹은 원본 GameObject의 복사본이며, 프로젝트 내에서 여러 번 재사용될 수 있습니다.

// 프리팹을 로드하는 예시
GameObject prefab = Resources.Load<GameObject>("PrefabName");
Instantiate(prefab, new Vector3(0, 0, 0), Quaternion.identity);

오늘은 개인 프로젝트를 하면서 잠시 Unity에서 자주쓰이는것들을 다시 돌아보는 시간을 가졌다.

개인프로젝트 링크 : https://github.com/qhrms012/SpartaNew3DSurvival

profile
게임개발자꿈나무

0개의 댓글