본문 바로가기

레트로의 유니티 게임프로그래밍 에센스

유니티 탑다운 슈터 게임 좀비서바이버 개발일지 1일차

1. 신으로 레벨아트 추가하기

 

2. 라이트 세팅 완료

 

3. 플레이어 캐릭터 추가 및 애니메이션 구성 확인

아바타 마스크 적용

3D 모델에서 특정 신체 부위에만 애니메이션을 적용할 수 이도록 아바타 마스크를 사용한다.

이를 사용하면 마스킹 된 부위를 제외하고 애니메이션이 적용된다.

 

입력과 액터 나누기

입력을 받는 클래스와, 입력에 의해 행위가 이루어지는 클래스를 나눈다.

 

프로퍼티Property

프로퍼티란 변수의 값을 읽거나 쓰는 과정에서 안전한 값 처리를 위해 추가 하는 클래스 맴버입니다.

 

객체지향 프로그래밍이 패러다임화 된지도 수십년이 지나면서 private맴버 변수를Get, Set 접근자를 통해 사용하는 방법은 너무나 많이, 일반적으로 쓰는 형태로 굳어져 버렸습니다.

맴버의 값을 수정할 때, 외부에 의존하지 않고 내부에서 값을 안전하게 처리할 수 있다는 큰 장점 때문입니다.

 

이러한 코드 스타일이 일반적으로 쓰이면서 마이크로 소프트에서는 이렇게 자주 쓰인다면 자동화까지 시켜버리자고 생각하게 되고, 그것이 바로 프로퍼티입니다. 

프로퍼티는 변수처럼 보이지만 변수가 아닙니다!!! (중요)

프로퍼티를 요약하자면

외부에서 public 맴버 처럼 사용이 가능하면서, Get Set 접근자를 사용하는데에서 오는 장점을 모두 누리게 해준다는 것입니다.

예를 들면

public class Pocket
{
	private int money;

	public int GetMoney()

		{ return money; }

	public int SetMoney(value)

		{ money = value; }
}

가 있다고 할 때, 외부에서 접근 할 때는

Pocket p1 = new Pocket();

p1.SetMoney(1000);

Console.WriteLine(p1.GetMoney());

이렇게 접근해야 원하는 값이 나올 것입니다.

함수의 형태로 사용해야만 하죠.

 

하지만 프로퍼티를 사용한다면

public class Pocket
{
	public int Money {get; set;}
}

이렇게 표현이 가능합니다 이는 자동구현 프로퍼티 라고 합니다.

간단해 보이지만 여기에는 private int Money 라는 맴버 변수가 이미 존재하고 있는 것입니다.

이를 외부에서 수정하는 것도 더 간편해집니다.

Pocket p1 = new Pocket;

p1.Money = 1000;

Console.WriteLine(p1.Money)

마치 직접 맴버를 수정하는것 같지만 접근자 사용시의 이점을 모두 누리고 있는 것이죠.

 

자동으로 구현된 속성을 사용하여 간단한 클래스를 구현하는 방법 - C# 프로그래밍 가이드 | Microsoft Learn

 

자동으로 구현된 속성을 사용하여 간단한 클래스를 구현하는 방법 - C# 프로그래밍 가이드

C#에서 자동으로 구현된 속성을 캡슐화하는 변경할 수 없는 간단한 클래스를 만드는 방법에 대해 알아봅니다. 구현 방법에는 두 가지가 있습니다.

learn.microsoft.com

 

 

이 프로젝트에서는 자동 구현 프로퍼티를 사용했습니다.

public float gold { get; private set; }

 

자동 구현 프로퍼티를 사용하면 아래의 코드가 작성되는 것과 다름없습니다. ( 일반 프로퍼티 사용 시와 비교하는 코드 )

private float m_gold;
public float gold {
	get {return m_gold;}
    private set {m_gold = value;}
}