클래스
- 코드를 정리할 때 사용되고 비슷한 것들을 그룹화할 수 있게 해줌
- 변수와 메서드를 보관하는 매우 유용한 용기임
- 보통 여러 개의 일이 아닌 하나의 주된 일을 하도록 구성됨 => 코드를 읽기도 쉽고 문제 해결도 편하고 여러 사람이랑 프로젝트를 작업하기 편하다.
ex) 움직임, 충돌 처리기, 슈팅, 점수, 적 인공지능 등
유니티 내장 클래스
- 유니티가 사용하기 좋게 이미 만들어 놓은 클래스
- 클래스에 접근하면 안에 있는 컨텐츠에 접근하는 것임
- .연산자를 통해 접근한다.
ex)
클래스이름.메서드이름();
ClassName.MethodName();
Input클래스는 플레이어가 키를 눌렀을 때 어떤 키를 눌렀는지에 대한 정보가 'Input'에 저장되어 있음
Input.anyKey // 키 입력이 들어왔는지 체크하는 프로퍼티(bool형 값)
Input.GetKeyDown(KeyCode.Space) // 플레이어가 Space를 눌렀을 때 체크하는 메서드(bool형 반환)
Input 클래스
Input.GetKey vs GetKeyDown vs GetKeyUp
// 키가 눌려졌을 때 1번
Input.GetKeyDown()
// 키를 누르고 있을 때 계속
Input.GetKey()
// 눌렀던 키를 뗐을 때 1번
Input.GetKeyUp()
매개변수가 다른 경우
메서드가 매개변수 형태를 둘 다 허용하는 경우다.
- 위아래 화살표로 페이지를 넘길 수 있다.
* 문자열 참조는 안 하는 게 좋다 - 오류가 생길 확률이 증가(실수)
* 만약 해당 시그니처 옵션(매개변수 형태가 보이는 창)이 사라졌을 때 Ctrl + Shift + Space를 누르면 다시 창이 뜬다.


Movement.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Movement : MonoBehaviour
{
void Start()
{
}
void Update()
{
// 키가 눌려졌을 때 1번
// Input.GetKeyDown()
// 키를 누르고 있을 때 계속
// Input.GetKey()
// 눌렀던 키를 뗐을 때
// Input.GetKeyUp()
ProcessThrust();
ProcessRotation();
}
void ProcessThrust()
{
// Input.GetKey("Space");
if (Input.GetKey(KeyCode.Space))
{
Debug.Log("Pressed SPACE - Thrusting");
}
}
void ProcessRotation()
{
// 왼쪽으로 회전하면서 오른쪽으로 회전할 수는 없으므로
if (Input.GetKey(KeyCode.A))
{
Debug.Log("rotate left");
}
// 여기서 else는 위의 if문에만 해당됨
else if (Input.GetKey(KeyCode.D))
{
Debug.Log("rotate right");
}
}
}

코드를 어디에 캡슐화 하는가?
캡슐 : 코드의 부분마다 알아야하는 기초 수준의 접근
- 모든 것이 서로에게 접근할 수 없도록 하면 좋음
ex) Movement 클래스에 있는 메서드만 움직임을 수정 할 수 있음 - 두 세개의 클래스가 움직임을 같이 처리하면 실제로 속도가 무엇이어야 하는지와 어떤 것이 진짜인지 헷갈릴 수 있음
구조
러시아 인형인 마트료시카처럼 구성됨
ex) 작은 인형이 큰 인형에 들어있고 또 그 인형이 더 큰 인형에 들어있음 == 실행문이 메서드에 들어있고 메서드는 클래스에 보관되며 클래스는 전체 시스템의 네임 스페이스에 들어간다.
'유데미 강의 > C#과 Unity로 3D 게임 개발하기 : 부스트 프로젝트' 카테고리의 다른 글
소스 컨트롤 (0) | 2022.08.12 |
---|---|
오브젝트 회전과 매개변수와 Rigidbody (0) | 2022.08.04 |
부스터 (0) | 2022.08.03 |
유니티 유닛 (0) | 2022.08.03 |
게임 디자인 - 부스트 프로젝트 (0) | 2022.08.03 |