반응형
2.8.1 클래스
- 클래스를 사용하면 관계가 있는 변수와 메서드를 하나로 합칠 수 있어서 프로젝트를 관리하기 쉽다.
class 클래스명
{
멤버 변수 선언;
멤버 메서드 구현;
}
- 작성한 클래스는 int나 string 등 데이터형으로 사용할 수 있다.
- 유니티에서 제공하는 클래스도 있다.
2.8.2 클래스 작성하기
※ Player 클래스 구현하기
using System.Collections;
using System.Collections.Generic;
using UnityEngine; // 유니티가 동작하는데 필요한 기능 제공
using UnityEngine.UIElements;
public class Player
{
private int hp = 100;
private int power = 50;
public void Attack()
{
Debug.Log(this.power + " 데미지를 입히다.");
}
public void Damage(int damage)
{
this.hp -= damage;
Debug.Log(damage + " 데미지를 입었다.");
Debug.Log("나의 남은 hp : " + this.hp);
}
}
public class test : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Player myPlayer = new Player();
myPlayer.Attack();
myPlayer.Damage(30);
}
}
2.8.3 클래스를 사용하는 방법
Player myPlayer = new Player();
위 구문에서 new Player() 을 할 때 마다 새로운 객체가 생김에 유의 해준다.
새로운 객체를 만드는 것은 최초 1회만 하면 된다( 내 캐릭터 기준)
매 순간 새로운 객체를 만든다면, 늘 full hp 의 캐릭터를 기준으로 공격당하거나 공격하게 된다는 점을 유의하자
2.8.4 접근 수식자
- 접근 수식자 : class 앞에 public 이나 private의 키워드
- public 다른 클래스에서 접근이 가능함
- protected 같은 클래스와 해당 클래스의 서브클래스에서 접근 가능
- private 같은 클래스에서만 접근이 가능함
- 다른 클래스에서 이 변수의 값을 변경 할 수 없도록 하기 위함이다.
2.8.5 this 키워드
- this 키워드를 사용하면서 자키 클래스의 멤버 변수를 사용할 수 있다.
- Attack() 메서드 안에 power라는 변수를 새로 선언하고 초기값을 준다면, Debug.Log()에서 그냥 power만 출력하게 된다면, 어떤 변수를 지칭하는지 모르기 때문에 다른 값이 노출 될 우려가 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine; // 유니티가 동작하는데 필요한 기능 제공
using UnityEngine.UIElements;
public class Player
{
private int hp = 100;
private int power = 50;
public void Attack()
{
int power = 9999;
// Debug.Log(this.power + " 데미지를 입히다.");
Debug.Log(power + " 데미지를 입히다.");
}
public void Damage(int damage)
{
this.hp -= damage;
Debug.Log(damage + " 데미지를 입었다.");
Debug.Log("나의 남은 hp : " + this.hp);
}
}
public class test : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Player myPlayer = new Player();
myPlayer.Attack();
myPlayer.Damage(30);
}
}
※ 여기서 설명한 것은 프로그래밍 단계에서 객제 지향 이라고 한다.
※ 객체 지향의 3대 요소 : 상속, 접근 수식자에 의한 캡슐화, 다형성
※ class test : MonoBehaviour 에서 MonoBehaviour은 게임 오브젝트를 구성하는 기본 기능을 멤버 변수와 멤버 메서드로 준비한 클래스
반응형
'개발 > 유니티(UNITY)' 카테고리의 다른 글
3장 오브젝트를 배치하고 움직이는 방법 (0) | 2023.09.09 |
---|---|
2.9 Vector 클래스 사용하기 (0) | 2023.09.09 |
2.7 메서드 만들기 (0) | 2023.09.08 |
2.6 배열 사용하기 (0) | 2023.09.08 |
2.5.5 for 문으로 반복하기 (0) | 2023.09.07 |