728x90

전체 글 137

내일배움캠프 Unity - TIL : 25.04.24

오늘 학습한 내용1) 저장&불러오기 시스템에서의 마이그레이션 기능 구현 저장 데이터 구조 변경 시 이전 버전의 데이터를 자동으로 변환해 최신 구조에 맞추는 마이그레이션 시스템을 도입했습니다. 이를 통해 유저 데이터의 호환성과 안정성을 확보했습니다. 문제 및 해결 과정1) 문제 (게임 업데이트 후 이전 저장 데이터가 불러와지지 않음) 게임의 저장 데이터 구조가 변경되며, 구버전에서 저장된 데이터를 역직렬화할 때 오류가 발생하거나 필드가 누락되는 문제가 있었습니다. 시도한 해결 방법SaveData 구조체에 version 필드 추가불러오기 시 version을 기준으로 데이터 구조를 점진적으로 변환하는 MigrateData() 함수 작성필드 삭제/추가에 대비하여 [JsonExtensionData]를 사용해 ..

내일배움캠프 2025.04.24

내일배움캠프 Unity - TIL : 25.04.17

오늘 학습한 내용1) UniTask에서 _ =와 .Forget()의 차이점 UniTask 비동기 메서드를 호출할 때, _ =와 .Forget() 모두 await를 안쓰는 방식이지만 예외 처리 및 용도에 차이가 있습니다. 문제 및 해결 과정1) 문제 (UniTask를 실행할 때 _ =와 .Forget()의 차이점을 명확히 이해하지 못함)비동기 메서드를 실행할 때 _ =와 .Forget() 중 어떤 것을 사용하는 것이 더 적절한지 혼동이 있었습니다. 시도한 해결 방법공식 문서 및 샘플 코드 확인테스트를 통해 예외 발생 시 로그 출력 여부 비교결과 _ =는 단순 실행만 하며, 예외 발생 시 로그를 확인하기 어렵습니다..Forget()은 예외 콜백을 등록할 수 있어 디버깅에 더 용이합니다. 새롭게 알게 된 점_..

내일배움캠프 2025.04.17

내일배움캠프 Unity - TIL : 25.04.16

오늘 학습한 내용1) StringBuilder를 사용한 문자열 처리 성능 최적화 C#에서 문자열을 반복적으로 더하거나 조작할 때는 + 연산자보다 System.Text.StringBuilder를 사용하는 것이 성능상 유리하다는 점을 학습했습니다. 특히 반복문 내에서 문자열을 누적할 때 StringBuilder는 메모리 할당을 줄여 더 나은 성능을 제공합니다. 문제 및 해결 과정1) 문제 (문자열 누적 시 성능 저하 발생) 반복문을 사용해 긴 문자열을 생성할 때 + 연산을 사용하면, 문자열이 불변(immutable) 특성을 가지기 때문에 매번 새로운 문자열 객체가 생성되어 메모리 할당이 많아지는 현상이 있었습니다. 시도한 해결 방법string result = ""; 방식으로 반복 누적StringBuilde..

내일배움캠프 2025.04.16

내일배움캠프 Unity - TIL : 25.04.14

오늘 학습한 내용1) WebGL 빌드에서 VideoPlayer 사용 시 발생하는 제한 사항 Unity의 VideoPlayer 컴포넌트를 WebGL 플랫폼에서 사용할 경우 여러 제약이 발생합니다. 지원되지 않는 코덱 포맷(MP4, WebM 권장) 등으로 인해 영상이 재생되지 않거나 정상 동작하지 않는 문제가 있습니다.문제 및 해결 과정1) 문제 (WebGL에서 VideoPlayer가 재생되지 않음)Unity 에디터 등 다른 빌드에서는 정상 재생되던 영상이 WebGL 빌드 후 웹 상에서는 전혀 재생되지 않거나, 오류 없이 정지된 상태로 남아있는 문제가 발생했습니다. 시도한 해결 방법영상 포맷을 적절한 것으로 변경StreamingAssets 폴더에 영상이 있는지 확인VideoPlayer.waitForFirs..

내일배움캠프 2025.04.14

내일배움캠프 Unity - TIL : 25.04.09

오늘 학습한 내용1) ScrollRect 안의 UI 요소가 마우스 입력을 독점하여 스크롤이 되지 않는 문제 해결 ScrollView 안에 버튼이나 이미지 등 상호작용 가능한 UI가 있을 경우 드래그 시 ScrollRect가 아닌 해당 UI가 입력을 가져가 스크롤이 작동하지 않는 문제를 해결했습니다.문제 및 해결 과정1) 문제 (ScrollRect 내부 UI 요소가 마우스 입력을 가로채는 문제)ScrollRect 안에 버튼, 이미지 등의 UI 요소가 있을 경우, 드래그를 시도하면 해당 요소가 마우스 입력을 우선 처리하게 되어 ScrollRect가 드래그 이벤트를 받지 못하는 문제가 발생했습니다. 이로 인해 스크롤이 동작하지 않고 UI가 고정된 것처럼 보이는 현상이 나타났습니다. 시도한 해결 방법Scroll..

내일배움캠프 2025.04.09

내일배움캠프 Unity - TIL : 25.04.04

오늘 학습한 내용게임 개발에서 MVP (Minimum Viable Product)란? MVP(Minimum Viable Product)는 최소한의 핵심 기능만을 갖춘 제품을 의미합니다. 게임 개발에서는 게임의 핵심적인 재미 요소를 빠르게 검증할 수 있도록 최소한의 기능만 포함한 초기 버전을 MVP라고 합니다. 즉, MVP는 완성된 게임이 아니라 개발 과정에서 핵심 요소를 검증하기 위한 프로토타입입니다. 게임 개발에서 MVP의 중요성 1) 핵심 게임 플레이 검증  게임이 재미있는지, 목표한 대로 게임 진행이 흘러가는지 확인하는 것이 중요합니다.예를 들어, 핵심 메커니즘이 ‘플랫포머 게임의 점프’라면, 점프의 타격감과 조작감이 중요한 요소가 됩니다.이 핵심 요소를 먼저 구현하고 피드백을 받아야 합니다.  2..

내일배움캠프 2025.04.04

내일배움캠프 Unity - TIL : 25.04.02

오늘 학습한 내용1) Instantiate 시 부모 객체를 설정하면 자식 순서가 플랫폼마다 다르게 적용되는 문제 WebGL에서는 자식 순서가 항상 0번이 되고, Windows 및 Unity 에디터에서는 마지막 순서가 됨.SetSiblingIndex를 활용하여 일관된 자식 순서를 유지하도록 수정.2) WebGL 빌드에서 예외 처리(Enable Exceptions) 설정이 필요한 문제 특정 상황에서 런타임 오류 발생하지만 오류 메시지가 출력되지 않음Project Settings > Player > Publishing Settings > Enable Exceptions → "Full" 또는 "Explicitly Thrown Exceptions Only"로 변경 문제 및 해결 과정1) 문제 (Instantiat..

내일배움캠프 2025.04.02

내일배움캠프 Unity - TIL : 25.03.27

오늘 학습한 내용1) Unity EditorWindow Unity에서는 EditorWindow를 활용하여 커스텀 에디터 창을 만들 수 있습니다.이번에 구글 스프레드시트에서 데이터를 다운로드하고 ScriptableObject(SO)를 생성 및 적용하는 툴을 제작하였습니다.이 툴을 통해 유닛(Unit) 및 몬스터(Monster) 데이터를 가져와 게임 내에서 활용할 수 있습니다. EditorWindow를 활용한 커스텀 툴 구현  using UnityEditor;using UnityEngine;using System.Collections.Generic;public class DataDownloaderWindow : EditorWindow{ private List myObj = new List(); [..

내일배움캠프 2025.03.27

내일배움캠프 Unity - TIL : 25.03.26

개요Unity의 기본 인스펙터는 자동으로 MonoBehaviour 스크립트의 변수를 표시하지만, 복잡한 기능을 추가하기에는 한계가 있습니다.이를 해결하기 위해 CustomEditor를 사용하면 사용자 정의 UI 및 기능을 인스펙터에 추가할 수 있습니다.CustomEditor를 활용한 기본적인 확장using UnityEditor;using UnityEngine;// MyComponent의 인스펙터를 확장하는 Custom Editor[CustomEditor(typeof(MyComponent))]public class MyComponentEditor : Editor{ public override void OnInspectorGUI() { // 기존 인스펙터 UI 유지 Dra..

내일배움캠프 2025.03.26

내일배움캠프 Unity - TIL : 25.03.25

오늘 학습한 내용1) 코루틴 new 키워드 사용 줄이기 yield return new WaitForSeconds(1f);를 반복적으로 호출하면 매번 새로운 객체를 생성하여 GC(가비지 컬렉션) 부담이 증가WaitForSeconds 객체를 미리 선언하고 재사용하는 방식으로 최적화 가능 2) 연산 순서 고려하기 벡터 연산과 스칼라 연산을 혼합할 때 연산 순서가 성능에 영향을 줄 수 있음speed * Time.deltaTime * dir 방식이 dir * speed * Time.deltaTime보다 연산 효율이 높음스칼라 연산을 먼저 수행하고 벡터 연산을 나중에 실행하는 것이 성능에 유리함문제 및 해결 과정1) 문제 (코루틴을 사용할때 성능 저하 문제)  yield return new WaitForSecond..

내일배움캠프 2025.03.25
728x90