Unity에서의 스크립트 사용법

2024. 11. 26. 18:59Unity

Unity에서의 스크립트 사용법: 기본부터 실전까지

Unity에서 스크립트는 게임의 동작을 제어하고, 플레이어와 상호작용을 처리하며, 게임의 로직을 구현하는 데 사용됩니다.
Unity의 스크립트는 주로 C# 언어로 작성되며, 이를 통해 게임 오브젝트를 동적으로 제어할 수 있습니다.

이번 포스팅에서는 스크립트를 시작하는 방법부터 기본적인 사용법까지 단계별로 알아보겠습니다.


1. Unity 스크립트란?

Unity 스크립트는 게임 오브젝트의 행동과 상호작용을 정의하는 코드입니다.
스크립트를 사용하여 다음과 같은 작업을 수행할 수 있습니다:

  • 캐릭터 이동 및 애니메이션 처리
  • UI 버튼 클릭 이벤트 처리
  • 충돌 감지 및 반응
  • 게임의 상태 관리 (예: 점수, 목숨 등)

Unity에서는 C# 언어를 기본으로 지원하며, Visual Studio와 같은 IDE를 사용해 작성합니다.


2. 스크립트 생성 및 연결하기

1) 스크립트 생성

  1. Project 창에서 우클릭CreateC# Script를 선택합니다.
  2. 스크립트의 이름을 지정합니다. (예: PlayerController)

2) 스크립트 연결

  1. 스크립트를 게임 오브젝트에 추가하려면,
    • 스크립트를 드래그하여 게임 오브젝트에 놓습니다.
    • 또는 Add Component 버튼을 눌러 스크립트를 검색 후 추가합니다.

3. 기본 Unity 스크립트 구조

Unity에서 생성한 C# 스크립트는 기본적으로 다음과 같은 구조를 가집니다:

using UnityEngine;

public class MyScript : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("게임 시작!");
    }

    // Update is called once per frame
    void Update()
    {
        Debug.Log("매 프레임 호출됨");
    }
}

주요 메서드:

  1. Start()
    • 게임이 시작될 때 한 번 실행됩니다.
    • 초기화 작업에 사용됩니다.
  2. Update()
    • 매 프레임 호출됩니다.
    • 게임 로직(플레이어 이동, 애니메이션 실행 등)을 처리합니다.

4. Unity 스크립트 사용 예제

1) 플레이어 이동 구현

using UnityEngine;

public class PlayerController : MonoBehaviour
{
    public float speed = 5.0f;

    void Update()
    {
        float moveX = Input.GetAxis("Horizontal") * speed * Time.deltaTime;
        float moveZ = Input.GetAxis("Vertical") * speed * Time.deltaTime;

        transform.Translate(new Vector3(moveX, 0, moveZ));
    }
}
  • Input.GetAxis: 키보드 입력을 받아 X, Z 방향으로 플레이어를 이동시킵니다.
  • transform.Translate: 오브젝트를 이동시키는 메서드입니다.

2) 충돌 감지

using UnityEngine;

public class CollisionExample : MonoBehaviour
{
    void OnCollisionEnter(Collision collision)
    {
        Debug.Log("충돌한 오브젝트: " + collision.gameObject.name);
    }
}
  • OnCollisionEnter: Collider를 통해 오브젝트 간 충돌을 감지합니다.

5. 스크립트 활용 팁

  1. Public 변수 사용
  • Public 변수를 사용하면 Unity Inspector에서 값을 조정할 수 있습니다.
public float jumpHeight = 10.0f;
  • Unity에서 조정: PlayerController의 jumpHeight 값을 직접 변경 가능.
  1. Debugging
  • Debug.Log를 활용해 스크립트 실행 상태를 확인하세요.
Debug.Log("이동 속도: " + speed);
  1. 컴포넌트와 상호작용
  • 다른 컴포넌트를 제어하거나 정보를 가져올 때 사용합니다.
Rigidbody rb = GetComponent<Rigidbody>();
rb.AddForce(Vector3.up * 10, ForceMode.Impulse);

 


6. Unity 스크립트의 장점

  • 직관적인 연동: 게임 오브젝트와 쉽게 연결 가능.
  • 강력한 엔진 API: 물리, 충돌, 애니메이션 등 다양한 기능 지원.
  • 반복 테스트 용이: Play 모드에서 실시간으로 코드 확인 가능.

7. 요약

Unity 스크립트를 사용하면 게임 오브젝트의 동작을 제어하고, 다양한 상호작용을 구현할 수 있습니다.

  • 초보자는 Start와 Update부터 시작.
  • 점점 Collider, Rigidbody, Input 등 Unity 엔진의 기능을 활용.
  • 항상 Debug.Log를 사용해 코드를 점검하세요!