클래스

- 코드를 정리할 때 사용되고 비슷한 것들을 그룹화할 수 있게 해줌

- 변수와 메서드를 보관하는 매우 유용한 용기임

- 보통 여러 개의 일이 아닌 하나의 주된 일을 하도록 구성됨 => 코드를 읽기도 쉽고 문제 해결도 편하고 여러 사람이랑 프로젝트를 작업하기 편하다.

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를 누르면 다시 창이 뜬다.

Input.GetLKey(KeyCode)
Input.GetKey(string)

 

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) 작은 인형이 큰 인형에 들어있고 또 그 인형이 더 큰 인형에 들어있음 == 실행문이 메서드에 들어있고 메서드는 클래스에 보관되며 클래스는 전체 시스템의 네임 스페이스에 들어간다.

 

 

+ Recent posts