Unity 강의 1일차 (11) - 프로그래밍 기초
다음 작성 내용은 아래 문서들을 참고하여 작성 한 내용입니다. 학습 도중 더욱 자세한 내용이 궁금하다면 문서를 참고해시거나, 댓글로 질문을 주시면 성심성의껏 답변 드리겠습니다.
Unity 프로그래밍 기초 - Unity Learn
이 학습 프로젝트에서는 Unity 프로그래머의 기본 작업에 대한 샘플을 제공합니다. 게임 오브젝트의 동작 방식을 커스터마이즈하려는 경우에는 다른 역할에서도 이러한 작업이 유용할 수 있습니
learn.unity.com
자! 이제 드디어 프로그래밍을 도전해볼 차례입니다.
C#의 문법을 숙지하시면 매우매우 훌륭하겠지만 C#을 잘 모르시는 분들은 이해하기 어려우실 수 있습니다. 만일 이해가 안되시는 부분이 있으시다면 댓글 달아주시면 친절하게 답해드리겠습니다.
흠.. 저희 프로그래밍이 굳이 필요한가요?
블루프린트 방식을 사용해보신적이 있거나, 이전의 에셋에 컴포넌트만 추가해서 무언가 만들 수 있을 것이라 생각하신 분들이 이런 생각을 할 것입니다.
하지만 블루프린트와 컴포넌트 역시 '프로그래밍'으로 만들어졌다는 것에 유의해주셨으면 좋겠습니다. 그 둘은 게임 생성을 쉽게 해주기 위한 보조도구일 뿐, 더 자유롭고 섬세하며 자세하고 다양한 게임을 만들기 위해선 저는 프로그래밍은 필수라고 생각합니다.
Unity 개발은 일반적으로 Visual Studio를 사용하여 C#으로 이루어집니다.
IDE, 넌 무엇이지?
IDE (통합 개발 환경, Integrated Development Environment)는 소프트웨어 개발에 필요한 도구들을 하의 프로그램으로 통합한 환경을 제공하는 소프트웨어입니다. 아래 내용은 중요한 내용은 아니지만 코딩을 공부하는 분들이라면 한번쯤은 읽고 가시는 것이 좋습니다.
IDE의 기능은 다음과 같습니다.
1. 코드 작성을 위한 텍스트 에디터 역할
코드를 작성할 때 물론 메모장에다가도 가능하겠지만, 코드의 가독성은 날이 갈수록 증가하고 있습니다. 클래스, 변수, 함수 등 코드의 역할 분류를 색으로 해주고, 자동으로 들여쓰기를 해주는 기능은 지금은 당연하게 느껴지지만 매우 훌륭하고 편리한 기능입니다.
2. 작성한 코드를 실행하기 위한 빌더
메모장에다가 백날 코드를 작성해도 이를 실행시킬 수 없으면 문제가 되겠지요. 요즈음의 IDE는 다양한 언어로 작성된 코드를 빌드 할 수 있습니다. 물론 IDE에 따라 특화되어있는 부분이 있습니다.
3. 작성한 코드에 문제가 없는지 체크해 주는 디버거
이것이 없으면 코드를 실행하기 전까지는 오류가 있는지 확인조차 할 수 없습니다. 요즘은 AI까지 탑제되어 매우 빠르고 정확한 오류탐색이 가능해집니다.
4. 소프트웨어 편집, 빌드, 테스트, 패키징 등의 기능을 제공
Unity는 Visual Studio와 함께 제공됩니다. Visual Studio와의 통합으로 코딩과 디버깅을 완전히 별도의 IDE에서 수행하는 것보다 훨씬 간편한 환경을 제공합니다.
본격적으로 코드를 짜봅시다.
프로젝트창의 Assets에 새 폴더를 만들고 이름을 Scripts로 변경합니다.
Scripts 폴더에서 우클릭 -> Create -> C# Script를 생성하고 이름을 HelloWorld로 설정합니다.
주의! 처음 프로젝트를 설정할 때 이름을 바로 설정하는 것을 권장합니다. 처음에 설정한 이름대로 내부 클래스 네임이 작성됩니다. 이름을 잘못 설정했을 경우 삭제하고 새로 C# Script를 생성하는 것이 편할 수 있습니다.
이렇게 되면 C# Script는 하나의 컴포넌트가 됩니다!
맨 위의 바닥에 해당 스크립트 컴포넌트를 추가해봅시다.
하지만 우리는 아직 코드를 아무것도 작성하지 않았습니다. 그러니 아무 일도 일어나지 않죠.
코드를 작성해볼까요?
프로젝트창에서 코드를 더블클릭을 하거나 스크립트 컴포넌트의 우측 점 세개를 누르고 Edit Scirpt를 누르면 코드를 수정할 수 있습니다.
창을 열자마자 다음과 같이 적혀있습니다.
1행과 2행은 사용하지 않으므로 넘어가도 좋습니다.
3행의 Using UnityEngine; 은 UnityEngine을 사용하기 위해 사용하는 것 처럼 보이네요.
5행은 HelloWorld라는 이름의 클래스를 선언하는데, 무언가 특이한 것을 상속받네요.
MonoBehavior는 기본적으로 모든 Unity 스크립트가 파생되는 기본 클래스입니다. 주요 제공 기능은 다음과 같습니다.
1. 컴포넌트로 게임오브젝트와 연결이 가능해집니다.
이것은 해보았으니까 설명은 생략하겠습니다.
2. 유니티 이벤트 함수를 사용할 수 있습니다.
Unity는 각 상황에 호출되는 함수인 '유니티 이벤트 함수'를 제공합니다. 대표적으로는 8행에 있는 void Start() 함수는 게임 오브젝트가 존재하기 시작할 때 호출이 되고, 14행의 void Update() 함수는 프레임마다 호출됩니다.
3. 코루틴을 사용할 수 있습니다.
코루틴은 비동기 코드 작성 방식입니다. 지금은 이런게 있다 하고 넘어가신 이후, 애니메이션을 다루게 된다면 설명을 드리겠습니다.
설명만 많아요! 빠르게 코드를 짜고 결과를 보고싶어요!
네! 이제 진짜 코드를 작성해보겠습니다.
Start 함수 안에 다음 코드를 추가합니다.
Debug.Log("Hello World");
후에 Ctrl+S(Windows) 또는 Cmd+S(Mac) 키를 사용하여 스크립트를 저장합니다. 코드를 저장하지 않으면 Unity에 적용되지 않습니다! 항상 주의합니다.
게임을 플레이하면서 콘솔 창을 살펴봅니다. 콘솔 창에 'Hello World'라는 메시지가 표시됩니다.
이번엔 Update함수를 사용해볼까요?
Update 함수 안에 위 코드를 옮겨봅니다.
저장을 하고 다시 실행해보면
엄청나게 많은 로그가 뜨는 것을 확인 할 수 있습니다. 이는 프레임마다 Hello World를 출력하기 때문이겠죠.
변수를 추가해서 작성할 수도 있습니다.
흠... 코드를 짜보긴 했으나 프로그래밍 전공자로써 아직은 마음에 드는 내용은 아닙니다.
쭉쭉 나가서 300줄, 500줄 넘어가는 코드를 100개씩 만드는 날이 올 것입니다.
그런 실력을 가진다면 만들고 싶은 게임은 전부 만들 수 있겠지요.
그때까지 화이팅입니다!