분류 전체보기 51

내일배움캠프: Tag를 상수 처럼 사용해보자

유니티에서 Tag를 사용할 때는 문자열 형식으로 직접 값을 입력해야 하는데, 이 과정에서 오타가 발생하거나 tag 이름이 너무 길면 작성하는 데 번거로움을 느끼기 쉽다. 이러한 불편함을 줄이기 위해, 유니티 에디터를 커스터마이징하여 tag를 문자열 상수로 자동 생성해주는 유틸리티 클래스를 만들어보았다. 코드 public class TagEnumCreator: Editor{ [MenuItem("Tools/Generate Tag Enum")] public static void GenerateTagEnum() { string[] tags = UnityEditorInternal.InternalEditorUtility.tags; if (Directory.Ex..

내일배움캠프 2024.12.24

내일배움캠프: 커스텀 에디터

오늘은 게임 테스트를 하던 중 테스트 환경을 만들 필요가 있다고 생각이 들어 커스텀 에디터를 활용해서 테스트 환경을 만들었다. 실제로 게임의 기능을 담당하거나 그런 부분은 아니지만, 한번 만들어보니 게임을 제작하는데 있어서 아주 핵심적인 부분이 될 것 같다고 느껴졌다. 특정 버그를 테스트 하는데 있어서 장르의 특성상 많은 시간이 걸렸는데 테스트 환경을 도입하고 나니 그 시간이 많이 줄어들었다. 만드는데 있어서 시간이 소모가 되긴 하지만 장기적으로 봤을 때는 많이 도움 될 것 같다.

내일배움캠프 2024.12.20

내일 배움 캠프: 타일맵 깜빡임 현상 수정하기(Tilemap Flickering)

오늘은 유니티에서 픽셀퍼펙트를 적용하면서 타일맵이 깜빡이는 현상이 생겨 이를 수정하고자 방법을 찾아 보던 중 Sprite Atlas에 타일맵을 넣으면 해결 된다는 글을 읽어 시도해보았다. 타일맵을 Sprite Atlas에 넣으면 텍스처 블리딩을 줄이고 픽셀 퍼펙트를 더 정확하게 적용할 수 있기 때문에 깜빡이는 현상이 해결되는 것으로 보인다. 또한 드로우 콜 최적화 덕분에 렌더링 성능도 같이 개선 될 수 있다.

내일배움캠프 2024.12.17

내일배움캠프: 확장메서드

확장 메서드(Extension Methods)란?개발을 하다보면 기존 클래스의 기능을 추가하고 싶은데 클래스 상속이 막혀 있거나 기능을 추가하기 어려운 경우가 존재한다. 이럴 때 확장 메서드를 사용하면 편하게 기능을 추가할 수 있다. 확장 메서드의 특징정적 클래스와 정적 메서드로 선언확장하려는 클래스의 인스턴스를 첫 번째 매개변수로 받으며, this 키워드를 사용네임스페이스를 통해 확장 메서드를 사용 가능 확장 메서드의 기본 문법public static class MyExtensions{ public static int WordCount(this string str) { return str.Split(new char[] { ' ', '.', '?' }, StringSplitOpti..

Unity 2024.12.16

내일배움캠프: Audio Mixer를 사용해야 하는 이유

유니티 메뉴얼 오늘은 Audio Mixer를 활용한 오디오 소스 볼륨 조절 방식에 대해서 공부했다.유니티에서는 사운드 리소스를 재생하려면 오디오 소스 컴포넌트를 필수적으로 사용해야 한다. 그런데 이 오디오 소스 컴포넌트를 더 잘 다룰 수 있게 도와주는 도구가 바로 Audio Mixer다. 오디오 소스 볼륨을 조절하는 것만으로도 소리를 제어할 수 있다.하지만 여러 개의 오디오 소스를 사용하게 되면, 개별적으로 관리해야 해서 작업이 굉장히 복잡해질 수 있다.Audio Mixer를 활용하면 이 문제를 훨씬 간단히 해결할 수 있다.Audio Mixer를 사용해야 하는 이유오디오 소스의 Output을 Audio Mixer의 특정 그룹에 연결하면, 해당 그룹의 볼륨만 조정해도 연결된 모든 오디오 소스의 설정이 한 ..

내일배움캠프 2024.12.12

내일배움캠프: LayerMask와 layer

유니티 메뉴얼오늘은 LayerMaske와 layer를 좀 더 정확하게 구분하기 위해 공부했다.   Layer를 int로 가져오는 것과 LayerMask로 가져오는 것의 차이Layer정수 값으로 layer를 표현해줌.Unity 에서는 각 layer를 0~31까지의 정수 ID로 관리특정 레이어 하나를 가져오기 위해 사용 즉, 개별 Layer 식별에 사용되며, 비트 연산 없이 단일 Layer만 집중!   int playerLayer = LayerMask.NameToLayer("Player");Debug.Log(playerLayer); // 출력: 해당 Layer의 정수 값 (예: 5)LayerMaskLayerMask는 Layer를 비트 플래그로 표현한 정수 값을 가짐.여러 Layer를 조합하거나 필터링할 때 ..

내일배움캠프 2024.12.11

내일배움캠프: SortingLayer

유니티 SortingLayer 공식 문서  개발 하는 게임 장르 특성상 다양한 오브젝트가 화면에 렌더링 되는 경우가 많기 때문에 layer를 잘 나눠줘야 하는데 어떻게 순서를 지정해주는게 좋을 지 감이 안 잡혀서 SortingLayer와 Order in Layer에 관해 공부를 했다.  Sorting Layer와 Order in Layer의 차이점Sorting Layer는 오브젝트를 더 큰 범주로 나누어 렌더링 순서를 결정하기 위해 주로 사용!예를 들어, 배경과 캐릭터, UI를 각각 다른 레이어로 설정해서 관리할 수 있다. Order in Layer는 같은 Sorting Layer 내에서 세부적으로 오브젝트 간의 렌더링 순서를 조정할 때 유용. 즉, 한 Sorting Layer 안에서 세부적인 순서를 정..

내일배움캠프 2024.12.10

내일배움캠프: GetInstanceID

오늘은 Unity에서 PoolManager를 만드는 중 키 값을 enum이나 string 대신 사용할 더 좋은 방법이 없을까 고민하다가 GetInstanceID라는 메서드를 발견했다.이 메서드는 Prefab의 고유한 Instance ID를 반환해주며, 이를 활용하면 Dictionary의 키 값을 string 대신 int로 설정할 수 있어서 문자열 비교를 배제할 수 있게 됐다.enum이나 string이 불편했던 이유기존에 enum을 사용하면 새로운 풀을 추가할 때마다 enum 값을 추가해야 하는 번거로움이 있었다.string을 사용하는 경우에도 문자열 비교로 인해 성능 저하가 생길 수 있고, 오타로 인한 에러가 발생할 가능성도 있었다. GetInstanceID 사용GetInstanceID를 사용하면 이러한..

내일배움캠프 2024.12.09