본문 바로가기
Unity/TIL

ReadyOnly + 갠플 개발 일지

by 김차루 2024. 5. 10.
스파르타 내배캠 19일차 TIL
C5조_🥱안하조(사실 해)

 

 

 

강의를 듣던 중 ReadOnly 라는 상수를 처음 알게 됐다. 하지만 강의를 보다보면 이해하겠지 하고 넘겼는데 약간 const나 var의 느낌으로 받아드렸던 것 같다. 그래서 오늘은 ReadOnly를 정리해보고자 한다. 

 

ReadOnly

readonly는 런타임 상수이다. 프로그램이 실행 중에 초기화 하는 것이 가능하지만 다른 스크립트에서 읽을 수는 없다. 초기화를 해두고 생성자에서 바꾸거나, 초기화를 하지 않고 생성자에서 최초로 초기화를 해주거나 하는 등 값을 런타임 중에 세팅할 수 있다. 

class Example
{
	public readOnly int c;
    public readOnly int d = 20;
    public Example()
    {
    	c=99;  //생성자 내부에서 초기화 가능
        d=33;
    }
}

 

단, readOnly는 함수의 멤버로 사용할 수 없다. 

 

그렇다면 const와 readonly는 무슨 차이점이 있을가?

const

컴파일 타임 상수라서, const 값을 변경하는 경우 컴파일부터 다시 해야하는 비용이 든다. 선언한 상수는 정적 변수와 동일하게 취급되기 때문에 "클래스.상수"로 접근한다.

 

readonly

값을 생성자에서 초기화 할 수 있다. readOnly는 "인스턴스.상수"로 접근한다. 

 

둘의 장단점이 다르기 때문에 때에 따라서 골라 사용하면  될 것 같다. 

 

 

GameObject 안의 Canvas

목표는 플레이어 머리 위로 닉네임 텍스트를 띄우는 것이었다. 그렇게 하려면 canvas를 world space에 둬야하는데 여기서 문제가 발생했다. 기본 캔버스는 게임 화면에 비해 너무 컸고 줄이게 되면 글자가 흐려져 없어지는 상황이 발생했다. 

쬐깐한게 게임 화면

Canvas가 비추는 종류를 달리 해보고 크기도 요리조리 바꿔보았지만 답이 나오지 않아 구글링을 빡세게 했다. 슬슬 튜터님께 찾아갈까 고민하던 중 해결 방법을 찾게 됐다. 

 

Text의 Scale을 줄이는 것

(사진 첨부 예정) 이미 canvas의 크기가 x:1, y:1인 상황에서 폰트 크기를 24 정도(평범하게) 해두고 scale를 0.01 이런 식으로 확 줄여버리는 것이다. 이렇게 했더니 위의 사진과 마찬가지로 깨짐 없이 깔끔히 화면에 나타나는 것을 볼 수 있었다. 방법이 이것 하나 밖에 없진 않을 것 같지만 시간이 빠듯한 관계로 다른 방법은 다음에 찾아보려고 한다... 아니면 튜터님께 갈 일이 생기면 한 번 여쭤보는 것도 좋을 것 같다. 

 

마무리하며

아악

아름답다... 안 그래도 맵 깔기 귀찮아서 제일 마지막으로 하고 있었는데... 결국 레이어를 분할하지 않고 깔아버렸다. 맵 까는 외부 에셋이 없을까...? Tile Tool 중에 자르고 복사 붙이기가 있었으면 정말 편했을텐데... 이렇게 된거 맵 수정과 에셋 변경 등등 꾸미는 건 주말에 하는 게 맘 편할 것 같다. 게임 컨셉도 정하고 에셋도 변경해야 하니 아직 앞으로 할 일이 많다. 빨리빨리 작업하면 좋을 것 같은데 아직 손이 많이 느리다. 하다보면 늘겠지 싶지만 마음이 급해지는 것은 어쩔 수 없는 것 같다. 

 

 

'Unity > TIL' 카테고리의 다른 글

개인과제 해설  (0) 2024.05.14
개인과제 마무리  (0) 2024.05.13
오브젝트 풀링과 FixedDeltaTime vs DeltaTime  (0) 2024.05.09
Unity 게임 개발 입문 시작  (0) 2024.05.08
2주차 팀플 마무리  (0) 2024.05.07