지난주 리뷰
- 게임 오브젝트 이동 방식
- 카메라 조작(시점 고정), 월드 구성
- 3D 객체 충돌 판정
- UI 기초
목표 : 2D 게임, 물리, 충돌 영역
- object class 보강
- 보물 사냥꾼 완성 : 위협요소와 파티클(꾸미기) 기초
- 결과 연출, 로비 씬 구성 (UI 연습)
- 마카롱 키우기 기초
< CLASS 의 이해 >
■ CLASS의 개념
클래스는 Object(객체)라는 개념을 인스턴스로 찍어내기 위한 공통적 속성과 기능을 정해 모아놓은 설계도의 기능을 한다.
비유 ) 붕어빵틀(CLASS)로 붕어빵(OBJECT)를 만들 때 만들어진 붕어빵들이 인스턴스(INSTANCE)
■ CLASS의 이해
CLASS의 데이터를 표현하는 방식
- 하나의 데이터만 의미하는 int(정수), float(실수), string(문자열)과 같은 데이터 표현 방식 각각도 클래스로 취급함
- 여러 데이터(+함수) 데이터를 표현하고 싶을 때 cat, dog 같은 동물들의 속성을 animal이란 클래스를 만드는거!
■ CLASS의 선언과 상속
- 클래스의 선언
class Animal {int age =0; string name == ""; virtual void PlaySound(){Debug.Log("GRRRR");}}
- 상속의 개념
class Cat : Animal {int curLevel=4; override void PlaySound(){Debug.Log("meow");}}
여기서 Animal은 부모 클래스, Cat은 자식 클래스이고, 자식 클래스는 부모 클래스의 정보를 상속받아서 부모 클래스에서 작성된 모든 속성을 자식 클래스가 가지고 있고,자식 클래스만 가진 고유한 속성만 추가하거나 부모의 속성 함수를 재정의해서 코딩하면 된다.
■ 선언한 CLASS의 사용
Animal Choco = new Animal(); ← new라는 걸로 새로운 객체를 만든다고 선언
Animal 이라는 클래스에 새로운 변수 Choco를 정의하는데 이 변수에 새로운 객체로 정의한 Animal()을 대입하겠다는 의미
이것은 마치 int age = 10; 처럼 정의하는 것과 같다.
Choco.age= 5; 이런식으로 초코의 나이를 출력할 수 있음
■ CLASS 사용 테스트해보기
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Rendering;
class Animal
{
//클래스의 스코프
//public : 자식이나 클래스 밖에서 사용 가능(보통 이 경우이기는 함)
//protected : 자식에게만 사용 가능
//private : 내 클래스 내에서만 사용 가능(default)
public int animalage = 0;
public string animalName = "";
public void PlaySound() //playsound는 public으로 사용할거야
{
int preAge = CalAge();
Debug.Log("Grrr");
}
private int CalAge() //calage는 클래스 내부에서는 쓸 수 있지만 밖에서 사용하지 않을거야 -> public으로 바꿔야 이 밖 그러니까 아래의 Start 안에서 사용 가능
{
//--
return 7;
}
}
class Cat : Animal
{
public int curLevel = 100;
public void PlaySound()
{
Debug.Log("야옹야옹"); // 부모에서 자식으로 상속할수록 고유한 특성들을 갖게 됨 자식에서 부모로 갈수록 공통 부분을 모아주는 특성을 가짐
}
}
public class classtest : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Animal Choco = new Animal();
Debug.Log("Animal name" + Choco.animalName); //처음 만들어졌을 때 이름에는
//Animal name이라고만 나타남
Choco.animalName = "초코";
Debug.Log($"Animal name : {Choco.animalName}"); //이후 이름이 변하나 확인해보려고
//Animal name : 초코라고 나타남
Choco.PlaySound(); //위에서 만든 Debug.Log로 Grrrr가 나타남
Cat kitty = new Cat();
kitty.animalName = "키티";
kitty.PlaySound();
Debug.Log($"라야 이름 : {kitty.animalName}");
//여기에서 Choco.CalAge(); 를 하면 보호수준 때문에 액세스가 안된다고 함 -> 그래서 아예 지워야함
}
// Update is called once per frame
void Update()
{
}
}
■ 보물 사냥꾼
지난 시간에 했던 것에 오류가 없게 저장했던거 같은데 어디서 오류가 났는지를 못찾겠으니까 진도를 따라가도 의미가 없다는 생각에, 오류를 찾으려고 시도하다가 결국 진도를 놓쳤다... ㅠㅠ
같이 배우는 친구는 잘 하는 애라서 얘가 한거를 복사해놔서 나중에 따로 비교하면서 확인해봐야할듯 하다..ㅠㅠㅠ
컴퓨터에서 옮겨서 하려다가 다 날렸.... ㅠㅠㅠㅠ
는 다시 친구가 소생시켜줬다!! 야호
근데 이걸 어떻게 정리해야하나 ㅋㅋㅋㅋㅋㅋㅋ
소생 받기 전 놓친 진도는,
밤송이의 움직임을 조절하여 큐브를 쫓아가게 하는 것,
큐브가 충돌했을 때 멈추고 게임이 종료되는 것.
큐브가 동전을 먹을 때 파티클 추가.
소생받은 다음에는
큐브가 죽었을 때 파티클 추가
죽었을 때의 사운드 추가
UI로 게임 오버 문구 추가하기
UI의 텍스트 메테리얼을 바꾸는 방법(폰트를 변경)하기
로비씬 만들기
빌드 만들기
대박
'공부의 기록 > 유니티 게임프로그래밍 입문' 카테고리의 다른 글
유니티(Unity) 게임프로그래밍 입문 6일차 수업 (1) | 2024.12.15 |
---|---|
유니티(Unity) 게임프로그래밍 입문 5일차 수업 (0) | 2024.12.08 |
유니티(Unity) 게임프로그래밍 입문 4일차 수업 (0) | 2024.12.01 |
유니티(Unity) 게임프로그래밍 입문 2일차 수업 (0) | 2024.11.17 |
유니티(Unity) 게임프로그래밍 입문 1일차 수업 (4) | 2024.11.10 |