728x90

분류 전체보기 116

내일배움캠프 Unity - TIL : 25.03.07

오늘 학습한 내용AudioSource.PlayClipAtPoint AudioSource.PlayClipAtPoint는 특정 위치에서 AudioClip을 재생하는 메서드로 별도의 AudioSource 컴포넌트를 직접 관리하지 않고도 일회성 사운드를 쉽게 재생할 수 있는 기능입니다.이 메서드는 지정한 위치에 임시 AudioSource를 생성해 사운드를 재생한 후 자동으로 제거되므로 코드가 간결해집니다. 문제 및 해결 과정문제기존에는 사운드를 재생하기 위해 Scene 내에 AudioSource 컴포넌트를 미리 배치하거나, 매번 생성하고 관리해야 하는 번거로움이 있었습니다.  시도한 해결 방법 AudioSource.PlayClipAtPoint를 사용하여 사운드를 재생할 위치와 AudioClip 그리고 볼륨을 ..

내일배움캠프 2025.03.07

내일배움캠프 Unity - TIL : 25.03.06

오늘 학습한 내용1) InputSystem 보간을 통한 Blend Tree 애니메이션 적용 새로운 InputSystem은 기존의 Input.GetAxis와 달리 최종 값만 반환하기 때문에 바로 Blend Tree에 적용하면 애니메이션 전환이 자연스럽지 않고 끊기는 현상이 발생함을 확인했습니다.이를 해결하기 위해 Update() 내에서 현재 값(smoothDir)과 최종 입력 값(targetDir) 사이를 보간하기 위해 Vector2.Lerp() 함수를 사용하였습니다.구체적으로 아래와 같이 작성하여 자연스러운 애니메이션 전환을 구현하였습니다: smoothDir = Vector2.Lerp(smoothDir, targetDir, smoothTime); 여기서 targetDir은 InputSystem을 통해 받..

내일배움캠프 2025.03.06

내일배움캠프 Unity - TIL : 25.03.05

오늘 학습한 내용1) 제네릭 캐싱을 통한 GetComponent 최소화 캐릭터가 적을 공격할 때, OnColliderEnter 같은 이벤트를 이용해 적의 콜라이더를 감지하고, 해당 콜라이더에 부착된 적 스크립트를 가져와 데미지를 주는 과정에서 매번 GetComponent를 호출하면 성능에 부담이 생길 수 있습니다.제네릭을 활용한 캐싱 방식을 사용하면, 한 번 호출한 GetComponent의 결과를 저장해두고 재사용할 수 있어, 코드의 효율성과 성능이 크게 향상된다는 것을 배웠습니다.public static class ComponentCache{ private static Dictionary> cache = new Dictionary>(); public static T GetCachedCompo..

내일배움캠프 2025.03.05

내일배움캠프 Unity - TIL : 25.03.04

오늘 학습한 내용1) 인풋시스템 다이렉트 방식 소규모 프로젝트에 적합하며 간단한 입력 처리를 직접 구현할 수 있는 방식입니다. 2) 인풋시스템 임베디드 방식 각 캐릭터별로 개별 입력 설정이 필요한 경우에 사용하며 세부 설정을 통해 정교한 입력 처리가 가능합니다.  3) C# 제너레이트 방식 대규모 프로젝트에 추천되는 방식으로 자동화된 코드 생성 기능을 활용하여 보다 효율적으로 입력 시스템을 구현할 수 있습니다. 새롭게 알게 된 점인풋시스템에는 위와 같이 세 가지 방식이 존재하며 각 방식마다 프로젝트의 규모와 요구사항에 따라 장단점이 있다는 점을 배웠습니다. 이러한 다양한 입력 처리 방법을 간단하게 사용할 수 있다는 사실이 매우 인상적이었습니다. 앞으로의 계획앞으로 있을 개인 과제와 팀 과제에 적합한 인..

내일배움캠프 2025.03.04

내일배움캠프 Unity - TIL : 25.02.28

오늘 학습한 내용1) 유료 에셋 관리의 문제 인식 프로젝트 생성 시 유료 에셋을 어떻게 관리할지에 대한 고민이 있었습니다.예를 들어,유료 에셋을 처음부터 모두 커밋한 후 나중에 .gitignore를 적용하는 방법,또는 프로젝트 시작 전부터 폴더에 .gitignore를 설정하고 유료 에셋은 별도로 메일 등으로 주고받는 방법 등이 있습니다.문제 및 해결 과정문제프로젝트 완료 후 각 브랜치에 대해 별도로 .gitignore 작업을 진행해야 하니, 관리가 매우 번거롭다는 문제가 있었습니다.  시도한 해결 방법초기 설정 단계에서 유료 에셋에 대한 .gitignore를 적용하는 방법과, 유료 에셋을 별도 경로로 관리하는 방법을 고려하였습니다.다른 방법으론 메인 브랜치에만 .gitignore를 설정하고 다른 브랜치는..

내일배움캠프 2025.02.28

내일배움캠프 Unity - TIL : 25.02.27

오늘 학습한 내용Cinemachine탑다운 방식의 게임에서 플레이어를 따라가는 Cinemachine Virtual Camera를 설정했으나, 기본 설정으로 인해 카메라가 모든 방향으로 움직여 원하는 동작이 아니었습니다. 특히, 궁수의 전설처럼 좌우 이동만 제한하고자 했습니다. 문제 및 해결 과정문제 (카메라 이동 범위 제어)Cinemachine Virtual Camera가 기본적으로 모든 방향으로 움직여, 상하 이동도 포함되어 버렸습니다.  시도한 해결 방법 상하축 이동 제한은 Virtual Camera의 Body 옵션 중 Framing Transposer를 활용하여 설정하였습니다.좌우 카메라 이동 영역은 Confiner 2D를 이용해 지정함으로써, 원하는 범위 내에서만 카메라가 움직이도록 제어하였습니다..

내일배움캠프 2025.02.27

내일배움캠프 Unity - TIL : 25.02.25

오늘 학습한 내용OnValidate 메서드 OnValidate는 Unity에서 컴파일 시점에 작동하는 특별한 메서드로 스크립트의 인스펙터 값이 변경될 때 자동으로 호출됩니다.이를 활용하면 GetComponent와 같은 초기화 작업을 보다 효율적으로 수행할 수 있어 스크립트의 상태를 검증하고 자동으로 설정할 수 있습니다. 새롭게 알게 된 점OnValidate를 통한 코드 안정성 강화 OnValidate 메서드를 사용하면 에디터에서 스크립트의 값이 변경될 때 자동으로 초기화 작업을 실행할 수 있어 이를 이용하여 씬 작업을 할때 자동으로 인스펙터에 참조값을 넣어 코드의 안정성과 효율성이 크게 향상된다는 점을 깨달았습니다. 앞으로의 계획 프로젝트에서 OnValidate를 활용하여 코드 초기화 및 값 검증 과..

내일배움캠프 2025.02.25

내일배움캠프 Unity - TIL : 25.02.24

오늘 학습한 내용TSV에서 JSON으로 변환의 장점 구글 스프레드시트 데이터를 TSV 형식으로 받으면 헤더를 왼쪽부터 0, 1, 2, 3 등 숫자로 구분해야 하는 등 불편한 점이 있었지만 TSV 데이터를 바로 전달하는 대신 JSON으로 변환하면 데이터의 구조가 명확해지고 일관된 포맷을 유지할 수 있어 여러 문제가 해결된다는 점을 배웠습니다. 문제 및 해결 과정문제TSV 형식은 시트의 헤더를 단순히 왼쪽부터 0, 1, 2, 3 등으로 구분해야 하며, 데이터의 구조와 타입 정보가 부족하여, 정보 전달 시 혼란과 오류가 발생할 가능성이 있었습니다.  시도한 해결 방법TSV 데이터를 JSON으로 변환하는 과정을 도입하였습니다. 이를 통해 각 열의 헤더와 데이터를 명확하게 매핑하고, 데이터 구조를 직관적으로 표현..

내일배움캠프 2025.02.24

[Unity] 구글 스프레드시트를 이용한 데이터 자동 다운로드 및 적용

게임 개발 과정에서 데이터 관리와 업데이트는 매우 중요한 요소입니다. 특히 능력치나 게임 설정 데이터처럼 자주 변경되는 정보를 효율적으로 관리하기 위해 구글 스프레드시트를 활용하면 여러 면에서 장점을 얻을 수 있습니다.이번 글에서는 구글 스프레드시트에서 데이터를 다운로드해 TSV 형식으로 받아 JSON으로 변환한 후 이를 ScriptableObject(SO)에 자동으로 적용하는 전체 프로세스를 구현한 코드를 설명합니다. ScriptableObject(SO) 파일 스크립트 using UnityEngine;[CreateAssetMenu(fileName = "NewMonstere", menuName = "Scriptable Object/Monster Data", order = int.MaxValue)]publ..

Unity/코드 연구 2025.02.23

[Unity] Newtonsoft Json 설치 방법

Unity로 게임을 개발하다 보면, 데이터를 직렬화하고 역직렬화하기 위해 JSON 포맷을 사용하는 경우가 많습니다. 그러나 Unity의 기본 JsonUtility는 기능이 제한적이어서 복잡한 JSON 구조를 다루거나 다양한 옵션이 필요한 경우에는 보통 Newtonsoft.Json (Json.NET)이 사용됩니다.이 글에선 Unity Package Manager(UPM)를 이용하여 Newtonsoft.Json을 설치하는 방법을 설명합니다.1. Newtonsoft.Json강력한 기능: Json.NET은 복잡한 JSON 데이터 처리와 직렬화 및 역직렬화에 뛰어난 성능과 유연성을 제공합니다.IL2CPP 빌드 지원: Unity IL2CPP 빌드 환경에서도 안정적으로 동작합니다.업계 표준: 많은 개발자와 프로젝트에..

Unity/정보 2025.02.23
728x90