ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Unity]유니티 입문하기 4 (스크립트)
    프로그래밍 2023. 7. 21. 23:14

    저번 글에서는 컴포넌트를 활용해 오브젝트에 다양한 기능을 추가하여 보았습니다.

    오늘은 오브젝트에 프로그램 코드를 집어넣어 원하는 동작을 수행하는 법을 배워보겠습니다.


    컴포넌트에는 매우 다양한 종류가 있지만, 그렇다고 해도 개발자들이 원하는 모든 기능을 다 컴포넌트로 추가할 수는 없을 것입니다.

    그래서 개발자가 직접 컴포넌트를 만들 수 있는데, 이렇게 개발자가 직접 제작한 컴포넌트를 스크립트, 스크립트를 프로그래밍 언어로 작성하는 것을 스크립팅이라고 합니다.

     

    그럼 스크립트를 만들기 위해, 프로젝트 창으로 가봅시다.

     

    먼저 Assets에서 시작해서 원하는 폴더로 들어가 우클릭 -> 생성 -> C# 스크립트를 누르면 그 위치에 스크립트 파일을 생성할 수 있습니다.

    굳이 더 들어가지 않고 Assets에 만들어도 무방합니다.

     

    그 후 원하는 오브젝트의 인스펙터 창을 열어 그곳에 스크립트 파일을 드래그 & 드롭하면

    다음과 같이 스크립트가 컴포넌트로 추가되게 됩니다.

     

    물론, 스크립트 또한 컴포넌트이므로 컴포넌트 추가 -> New Script를 통해 스크립트를 추가함과 동시에 컴포넌트로 추가할 수 도 있습니다.

    이 경우, 스크립트 파일은 Assets 폴더에 생성되게 됩니다.

     

    스크립트 컴포넌트를 추가하는 데 성공했으면, 프로젝트 창이나 인스펙터 창에서 스크립트를 더블클릭하게 되면 위와같이 기본적인 코드들이 입력된 상태일 것입니다.

     

    위에서부터 가볍게 살펴봅시다.

    using은 스크립트 외부에서 필요한 부분을 가져와 사용하겠다는 뜻으로, 다른곳에서 정의된 것들을 이 스크립트에서도 똑같이 재정의할 필요 없이, 그대로 가져다 쓸 수 있게 해줍니다.

     

    public class와 그 뒤의 괄호로 감싸진 부분은 클래스 입니다.

    클래스는 C#과 유니티 스크립트에서 핵심이 되는 부분으로, 보통 하나의 스크립트가 하나의 클래스와 대응됩니다.

    해당 클래스의 이름인 PlayerController 뒤의 콜론(:)과 MonoBehaviour는 해당 스크립트를 컴포넌트로서 작동하게 해, 오브젝트에 부착할 수 있도록 해줍니다.

    즉, ': MonoBehaviour' 부분이 없다면, 해당 스크립트를 컴포넌트로 추가할 수 없게 되어 오류가 발생하게 됩니다.

     

    그리고 괄호 안에 void Start()와 void Update()가 들어있는 것을 볼 수 있을 텐데요, 이 둘은 '매서드'의 일종으로, 간단하게 함수와 비슷한 것이라고 생각하시면 편합니다.

    위의 주석에도 적혀있듯이 Start()와 Update()에는 각각 오브젝트 생성 후 첫 프레임에 실행할 코드(Start)와 매 프레임마다 반복적으로 실행할 코드(Update)를 입력하면 됩니다.

     

     

    여기서 잠깐 프로젝트 창의 윗부분을 자세히 보시면 콘솔이 있는 것을 알 수 있는데요, 여기서는 유니티가 출력하는 오류, 경고, 그 외 메시지를 볼 수 있습니다.

     

    콘솔창과 Srart(), Update()의 테스트를 위해, 아래 코드를 Start()나 Update()의 중괄호 속에 넣어줍시다.

    Debug.Log("입력하고 싶은 메세지")

    Debug.Log() 메서드는 큰따옴표 안의 문자열을 콘솔창에 출력해주는 메서드입니다.

     

    이렇게 수정한 코드를 저장한 뒤 유니티 창으로 돌아가보면, 유니티가 수정사항을 확인하고 적용하는 과정을 거치게 됩니다.

     

    이제 씬 뷰 위의 시작 버튼을 눌러 게임을 테스트해보면 위와 같은 결과가 나올겁니다.
    Start() 에 코드를 집어넣은 경우 한번만 출력되고 끝이지만, Update에 코드를 집어넣은 경우 메시지가 계속해서 갱신중임을 메세지가 출력된 시간이 점점 변하는 것을 통해 알 수 있습니다.

Designed by Tistory.