컴포넌트Component는 유니티에서 '이 기능을 사용하지 않을까~'해서 미리 만들어 놓은 기능이 있는데 만들다 보면 추가로 필요해지는 기능이 있게 된다.
이때 필요한 것이 VS를 통한 코딩.
오늘은 그렇게 코딩을 통해 컴포넌트를 추가하는 연습을 해보려 한다.
* 유니티를 통한 VS 코딩.
1. 스크립트Script 만들기
에셋 폴더에 새로운 폴더를 만들고(다른 파일과 구분하려고) 해당 폴더 안에서 우클릭 → Create -> C# Script
생성하면 Visual Studio로 연결되는 파일이 만들어진다.
- VS는 C# 스크립트.
- 클래스 명 뒤에 나오는 : MonoBehaviour는 유니티 자체적으로 만들어둔 기능들이 담긴 클래스라고 생각하면 된다. 변수, 메서드 등.
- MonoBehaviour에 커서를 두고 F12누르면 우리가 만질 순 없지만, 어떻게 구현되어 있는지에 대한 정보가 들어있는 창이 뜬다. 여기 있는 게 전부 컴포넌트로 붙일 수 있는 기능들에 대한 내용임.
- 만약 글씨 색깔이 단색으로 나온다면 리본메뉴의 도구 → 환경 → 색 및 글꼴.
- C# 네이밍 규칙 : 클래스와 메서드는 첫 글자를 대문자로. 카멜 표기법 사용. 변수는 소문자로 시작.
2. 오브젝트에 컴포넌트 추가하기
빈 씬에 Hierarchy → 3D Object → sphere라는 오브젝트 만들고 아까 만든 코드에 대한 컴포넌트 추가.
방법은
1. add Component에서 찾아서 붙이거나
2. 파일을 드래그해서 Inspector창에 넣거나
편한대로 선택한다.
VS는 Inspector창의 해당 컴포넌트의 스크립트를 더블클릭해도 열린다.
3. 오브젝트에 스크립트 넣기
- start 메서드
: 유니티 예약 함수. 이 컴포넌트가 붙어있는 게임 오브젝트가 씬에 생성-업데이트되기 전, 첫 프레임에 한 번 실행.
Console.WriteLine은 유니티에서 쓰지 않는 듯?
Debug.Log() 는 디버그 시 로그를 찍어볼 수 있도록 제공해주는 메서드. 매개변수로 문자열을 넣으면 이 코드가 실행될 때 문자열이 입력되는 로그창이 뜬다.
Clear : 로그들 삭제 버튼
Collapse : ON/OFF 버튼. 활성화 시키면 중복된 코드들을 합쳐서 실행횟수를 보여준다(=요약).
Error Pause : 에러인 코드를 알려준다.
- 팁: 플레이 모드
이걸 누른채로 수정하면 플레이 모드 종료 시 수정한 모든게 도르마무되는 마법을 볼 수 있다...
그러므로 혹시 내가 지금 플레이 모드인지 단숨에 확인하도록 옵션을 바꿔보자.
Edit → Preference(유니티 엔진에 대한 설정들) → Colors → General → Playmode tint의 색을 누가 봐도 '지금 플레이 중이구나~' 눈치챌 수 있는 색으로 바꾸면 된다.
- update 메서드
: 프로그램 실행되는 동안 매 프레임마다 실행된다.
start와 달리 매 프레임 실행되므로
start는 초기화 작업을 할 때 주로 사용,
update는 입력, 움직임 같은 매 프레임마다 실행되어야 하는 기능에 주로 사용한다.
특정 시점에 실행되는 메서드, 어웨이크 디스트로이... 등등 있는데 그건 프로그램이 실행되면서 어떤 라이프 사이클에 따라 실행되는지를 검색하면 쉽게 나온다.
https://docs.unity3d.com/kr/2019.3/Manual/ExecutionOrder.html
이벤트 함수의 실행 순서 - Unity 매뉴얼
Unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행됩니다. 이 페이지에서는 이러한 이벤트 함수를 소개하고 실행 시퀀스에 어떻게 포함되는지 설명합니다.
docs.unity3d.com
유니티 공식 홈페이지 참조.
- 변수 만들기
변수: 프로그램을 만들 때, 프로그램이 데이터를 처리하는 어떤 기능. 그럼 그 데이터를 메모리에 저장해놓은 바구니가 변수.
1. 선언
: 변수를 사용하고 싶으면 먼저 선언을 해야한다( int test; ).
' [변수의 형태] [변수의 이름]; ' 이 반드시 들어가야 함. 여기까지가 저장하는 바구니까지 만들어놓은 것.
2. 대입
:변수만으론 아무것도 없다. 변수에 ' = ' 로 오른쪽의 내용(값)을 왼쪽(변수)에 넣어야 한다.
( int test = 0; )
대입은 [변수] = [값]; 을 하면 되는데 선언과 동시에 값 넣는 게 아니라면 초기화 작업 할 때(start 메서드에)(꼭 start메서드 아녀도 되긴 함.) 넣어야 한다.
(번외, float)
4. 실습
: 캐릭터를 만든다. 캐릭터가 갖고 있는 속성은 ' 이름, 나이, 혈액형, 키, 몸무게, 종족, 사람인지? '
4-1. 실습: if 로 만들어보기.
: 사람인지 아닌지를 if문을 통해 출력하자.
(번외) void
: 리턴값이 없다는 뜻.
[리턴값의 타입] [메서드 이름]([매개변수 타입] [매개변수 이름])
(번외) name변수 제작 중,
name 변수 밑에 파란줄 혹은 노란 경고: MonoBehaviour가 이미 갖고 있어서 VS상에서 '이것(내가 쓴 name)으로 네임 변수를 치환할까?' 하고 물어보는거. 근데 되도록 유니티 자체 변수, 메서드 등은 수정하지 않는 것이 좋다.
그래서, 원형이 되는 설계도를 스크립트 한 장 만들고, 여러 오브젝트에 복사해서 쓰면 편하다!
5. hp 만들기
: hp를 만들어두고, 추가로 HP를 더하는 메서드를 만든다.
hp를 감소시킨다면?
'메타버스기반게임콘텐츠기획 > 그날의 강의' 카테고리의 다른 글
(9-3) 유니티unity : 다운 받은 에셋으로 캐릭터, 움직임, 애니메이션 만들기 (0) | 2021.12.22 |
---|---|
(9-2) 유니티unity 코딩: 매개변수, $, Beginner Code-for문 (0) | 2021.12.21 |
(8-5) 유니티 (0) | 2021.12.17 |
(8-4) 유니티unity (0) | 2021.12.15 |
(8-3) 규칙 작성 (0) | 2021.12.15 |