Unity 53

퀘스트 시스템

퀘스트의 데이터를 의미하는 QuestDataSO 퀘스트 안의 작업을 의미하는 TaskDataSO - Quest Data SO 속성 소개Quest ID : 퀘스트 고유의 ID값Icon : UI에서 보여지는 이미지 (기획에 따라 삭제 가능)Quest Name : 퀘스트 이름Quest Description : 퀘스트 설명Tasks : 퀘스트안의 작업(TaskDataSO)를 List 형태로 관리Reward : 퀘스트 완료 후 받게될 보상Item Id : ListGold : intExp : intAcception Condition : 퀘스트를 진행하기 위한 선행 조건Pre Quest Id : ListRequired Item id : ListRequired Level : intUse Audo Complete : ..

Unity 2025.04.28

TIL - Addressable 설계

개요기존의 Resource Manager가 Resources폴더가 아닌Addressable을 사용하는 형태로 변경됨게임 시작 시 필요한 데이터를 한번에 로딩 후 꺼내 쓰는 방식으로 활용 (로딩 창 필요)Addressable은 비동기 형태로 데이터를 불러오게 되지만 미리 불러온 후에 사용하기 때문에 ResourceManager 사용 방법은 기존과 동일파일 관리 방법을 변경할 예정Resources 폴더 완전 삭제동적으로 불러올 데이터 Addressable에 등록라벨로 구분하여 관리사용 방법1. Addressable Label로 데이터 등록 int testCount = 0; public void Init() { Managers.Resource.Addressables.Initi..

Unity 2025.04.23

계층형 유한 상태 머신

계층 유한 상태 머신 (HFSM) 가이드 1. 계층 유한 상태 머신이란? 계층 유한 상태 머신(HFSM)은 유한 상태 머신(FSM)의 확장된 형태로, 상태를 계층적으로 구성하여 복잡한 상태 관리 시스템을 구현하는 디자인 패턴입니다. 각 상태는 하위 상태를 가질 수 있으며, 이를 통해 상태 간의 공통 로직을 효율적으로 관리할 수 있습니다. 계층 유한 상태 머신 구조 graph TD RootS..

Unity 2025.04.09

Unity Custom Editor - 윈도우 만들기

1. 기본 구조 설정먼저 에디터 스크립트를 생성하기 위한 기본 구조를 살펴보겠습니다.using UnityEngine;using UnityEditor;using System;public class MyEditorWindow : EditorWindow{ // 멤버 변수들 private string labelField = ""; private int layerField = 1; private string textField = ""; private string textArea = ""; private string button = ""; private int intValue = 0;} 2. 에디터 윈도우 열기메뉴를 통해 에디터 윈도우를 여는 방법입니다.[MenuItem("My..

Unity 2025.04.06

프로토타입 패턴

프로토타입 패턴이란?프로토타입 패턴은 생성 패턴 중 하나로, 기존 객체를 복제하여 새로운 객체를 생성하는 패턴입니다. 이 패턴의 핵심은 객체의 생성 비용이 높거나 복잡한 경우, 이미 생성된 객체를 복제하여 새로운 객체를 만드는 것입니다.  public virtual object Clone() => Instantiate(this); Instantiate(this): Unity의 Object.Instantiate() 메서드를 사용하여 현재 객체의 복사본을 생성합니다.Unity의 Instantiate 메서드는 다음과 같은 특징이 있습니다:Deep Copy 수행: 객체의 모든 컴포넌트와 하위 객체들을 포함한 완전한 복사본을 생성SerializeField와 직렬화 가능한 모든 필드들이 자동으로 복사됨Unity 엔..

Unity 2025.04.06

Unity UI 최적화

📖 캔버스 분할 전략문제점단일 캔버스에서 하나의 요소가 변경되면 전체 캔버스가 더티(dirty) 상태가 됨수천 개의 요소가 있는 경우 성능 저하가 심각해질 수 있음해결 방법캔버스를 여러 개로 분할업데이트 빈도에 따라 분리 (정적/동적 요소 구분)중첩 캔버스 활용으로 계층적 구조 만들기동일한 Z값, 재질, 텍스처를 가진 요소들을 같은 캔버스에 배치 🖥️ 그래픽 레이캐스터 최적화주의점모든 입력 지점을 반복 검사하므로 오버헤드 발생불필요한 레이캐스트 체크는 성능 저하의 원인최적화 방법비대화형 UI 캔버스에서 그래픽 레이캐스터 제거정적/비대화형 요소의 레이캐스트 타겟 비활성화월드스페이스/스크린스페이스 카메라 모드에서 차단 마스크 신중히 사용  🎮 UI 요소 최적화피해야 할 상황큰 목록이나 그리드 뷰의 무분..

Unity 2025.03.30

Unity 캐릭터가 아닌 오브젝트의 Animation Retargeting

무기 에셋을 다운 받았는데, Rifle 1, 2 에셋에서만 Draw 애니메이션이 누락되어있는 문제가 발생했습니다.  Object의 Bone의 이름만 다른 상황에서 쓸 수 있는 방법입니다.  우선 필요한 애니메이션을 복사합니다.복사한 애니메이션을 폴더로 들어간 후, Text파일로 엽니다.  Ctrl + H를 눌러 bone의 이름을 바꿔줍니다. 모든 이름을 바꾸고 저장하면 사용이 가능한 애니메이션이 됩니다.

Unity 2025.03.30

Unity 트러블 슈팅 - NavMeshAgent가 NavMesh에 배치되지 않았다는 오류

🚀 Trouble-Shooting1. 문제 상황 발생NavMesh를 런타임중에 빌드한 후에, 몬스터를 배치하면 Agent가 NavMesh에 제대로 배치되어있지 않다는 오류가 발생함.  2. 원인 추론NavMesh 빌드 함수 호출 이후에 곧바로 몬스터 생성 함수가 호출되는 것을 확인.NavMesh가 제대로 완성되기 전에 몬스터가 배치된 것은 아닐까 추측했습니다.Invoke함수를 통해 3초 정도 늦게 생성되도록 했지만, 문제는 해결되지 않았습니다.   3. 해결 방안3.1 첫번 째 해결법인터넷 검색을 통해 같은 문제를 겪고 있는 사람을 찾았고, Awake에서 naveMesh.enable을 false로 해주고 0.025초 뒤에 true로 변경해주면 정상적으로 작동한다는 것을 확인했습니다. 실제로 적용해보니 ..

Unity 2025.03.26

Unity Package Manager - Git URL Error (No git executable was found)

유니티 패키지를 깃허브 링크로 다운 받을 때, 에러가 발생하는 경우가 있습니다. "No Git Executable was found"해당 에러는 환경 변수에 Git.exe 파일 경로가 없어서 발생하는 에러입니다.  에러 해결 방법1. 우선 현재 사용중인 깃허브의 버전을 확인합니다. 2. 깃허브가 설치된 경로를 저장합니다.C:\Users\사용자명\AppData\Local\GitHubDesktop\app-버전\resources\app\git\cmd  3. 해당 경로를 환경 변수에 등록해줍니다. - 고급 시스템 설정 보기 -하단의 환경 변수 클릭 - 환경 변수 창에서 시스템 변수 -> Path를 클릭하고 편집 버튼 클릭 새로 만들기를 클릭하고 아까 저장한 링크를 붙여넣기 합니다.  이후 컴퓨터를 재부팅하면 깃..

Unity 2025.03.21