객체의 공통적인 속성과 기능을 간추리는 것을 추상화라고 하는데, 이때 추상화로 객체의 속성과 기능을 정의하는 것을 클래스라고 한다.
클래스는 메서드와 변수를 모아놓은 것이다.
클래스를 통해 관계가 있는 변수와 메서드를 하나로 합칠 수 있어 스크립트를 관리하기 쉽다.
클래스는 직접 만들 수도 있고, 유니티가 제공하는 클래스도 있다. (Debug 등..)
형식은 아래와 같다.
class 클래스명
{
멤버 변수 선언;
멤버 메서드 구현;
}
(메서드 뜻은 아래 참고)
https://greenchoco.tistory.com/134
클래스는 데이터형과 비슷한 형식으로 쓸 수 있다.
예를들어 데이터형 중 정수형 int 를 쓸 때 변수 num 을 써서 int num(정수형 변수명;) 으로 선언할 수 있는 것처럼,
만약 내가 player 라는 이름의 클래스를 만들고 변수 player1 를 쓴다면 player player1;(클래스 변수명;) 으로 쓸 수 있다.
즉 내가 만들어낸 클래스명 player가 데이터형 int와 비슷한 형식으로 쓰인다는 뜻이다.
(int 가 뭔지 궁금하면 아래 내용 참고)
https://greenchoco.tistory.com/96
이때 int num 에는 1이나 10같은 숫자를 대입할 수 있고, player형의 player1 변수에는 플레이어의 실체를 대입한다.
이때 이 실체를 인스턴스를 작성해 대입해야 하는데, 인스턴즈를 만들기 위해서는 new 클래스명() 을 써야한다.
(new 인스턴스의 구체적인 방법은 아래를 참고)
https://greenchoco.tistory.com/79
그리고 클래스를 쓸 때 public이나 private같은 접근수식자(접근제한자)가 같이 쓰인다.
(접근수식자(접근제한자)의 구체적인 내용은 아래를 참고)
https://greenchoco.tistory.com/135
위에 내용을 토대로 예시를 하나 들어보자
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class player
{
private int hp = 100;
private int stm = 40;
public void Attack()
{
Debug.Log(this.stm + " 데미지를 입혔다!");
}
public void Damage(int damage)
{
this.hp -= damage;
Debug.Log(damage + " 데미지를 입었다!");
}
}
public class test : MonoBehaviour
{
void Start()
{
player player1 = new player();
player1.Attack();
player1.Damage(30);
}
}
결과 :
40 데미지를 입혔다!
30 데미지를 입었다!
(여기서 쓰인 this 뜻은 아래 참고)
https://greenchoco.tistory.com/136
'유니티 C# > C#' 카테고리의 다른 글
C#기초 - 콜론(:)을 통한 상속(inheritance) 기능 사용 (0) | 2023.05.14 |
---|---|
C#기초 - get과 set 접근자의 사용 (0) | 2023.05.14 |
C#기초 - MonoBehaviour 뜻 (0) | 2023.05.11 |
C#기초 - static 메서드 뜻 (0) | 2023.05.11 |
C#기초 - this 키워드 뜻 (0) | 2023.05.11 |
댓글