분류 전체보기 19

[Unity/TIL] - 인벤토리창 만들기

public void OnInventory(InputAction.CallbackContext context){ if (context.phase == InputActionPhase.Started) { inventory?.Invoke(); ToggleCursor(); }}CallbackContext는 Unity의 New Input System에서 입력 이벤트를 처리할 때 핵심적인 역할을 합니다.InputAction.CallbackContext는 입력 이벤트가 발생했을 때 그에 대한 모든 정보를 담고 있는 구조체입니다. CallbackContext란?CallbackContext는 Unity의 InputAction이 호출될 때, 입력의 상태, 값, 타이밍, 장치 등의 정..

카테고리 없음 2025.05.20

[Unity/TIL] - GetComponent

더보기3번째 팀프로젝트 진행하면서 가장 많이 본 오류.NullReferenceException: Object reference not set to an instance of an object값이 없다. Null이다. 연결이 안되어 있다. 오류를 해결하다보니 내가 GetComponent를 이상하게 쓰고 있다는 걸 알게됐다. 그래서 쓰는 TIL.===== GetComponent()이 스크립트가 붙어있는 게임오브젝트에서 컴포넌트 T를 찾는다. (없으면 null 반환)Rigidbody2D rb = GetComponent(); GetComponent(문자열)안전성 떨어져서 거의 안 씀. 되도록이면 제네릭 방식 ()을 써야 함Component comp = GetComponent("PlayerController");..

카테고리 없음 2025.05.19

[Unity/TIL] - 맵에 아이템 배치하기

맵에 아이템을 배치해야 하는데 오브젝트를 계속 복제해서 배치하기엔 성능저하가 올 것 같아 다른 방법을 찾아보았다. 오브젝트 풀링자주 생성되고 삭제되는 GameObject를 미리 만들어두고 재사용하는 방식.Instantiate()와 Destroy()를 반복하면 성능 저하가 생기기 때문에,쿠키런처럼 골드, 몬스터, 이펙트 등이 자주 등장하는 게임에선 풀링이 필수다. 오브젝트 풀링이란? 오브젝트를 담아두는 오브젝트 풀을 생성한다.필요할 때 오브젝트 풀에 있는 오브젝트를 빌린다.오브젝트 풀은 모든 오브젝트를 다 빌려줘서 더이상 빌려줄게 없을 때에만새로운 오브젝트를 생성해서 꺼내준다. 다 쓰면 다시 오브젝트 풀에 반환한다. (오브젝트를 파괴하지 않음) 출처 : 베르의 게임개발 유튜브 📌 풀링을 사용하지 않을..

카테고리 없음 2025.05.12

[Unity/TIL] - Vector3.Lerp / Layer충돌관리 / 맵 끼임 버그 / Composite Collider

함수 안에서 선언된 변수는 함수 안에서만 쓸 수 있다.만약다른 함수에서도 사용하고 싶다면함수 바깥에서클래스의 멤버변수로 선언해야한다. Vector3.LerpVector3.Lerp는 두 벡터(Vector3) 사이를 부드럽게 이동하는 함수.캐릭터나 카메라 이동, 스케일 변경 등 부드러운 전환(보간)에 자주 사용.Vector3.Lerp(Vector3 시작위치, Vector3 목표위치, float 보간값); 땅에 닿으면 점프횟수 초기화Player 아래에 빈 오브젝트 GroundCheck를 만든다.GroundCheck가 Ground 레이어가 붙어있는 오브젝트에 닿으면 점프횟수가 초기화된다.public Transform groundCheck;public float groundCheckRadius = 0.2f;p..

카테고리 없음 2025.05.11

[Unity/TIL] - Header / GetChild / enum / Effects-ParticleSystem

Header인스펙터(Inspector) 창에서 변수 그룹 위에 제목을 표시해주는 애트리뷰트(Attribute) transform.GetChild(index)트랜스폼(Transform) 안에 있는 자식 오브젝트 중에서,특정 인덱스에 해당하는 자식을 가져오는 함수.Transform child = transform.GetChild(0); 현재 오브젝트의 첫 번째 자식 오브젝트를 가져온다.반환되는 타입은 Transform.Player (부모)├── Weapon (자식 0)├── Hat (자식 1) 이런 구조일 때Transform firstchild = transform.GetChild(0);Debug.Log(firstChild.name);=> "Weapon" GetChild(1)은 => ..

카테고리 없음 2025.05.09

[Unity/TIL] - 4주차 Unity입문 트러블슈팅

1. MainCamera 배경색이 화면을 덮음. - target을 따라다니는 카메라를 만들었는데- 플레이해보면 MainCamera에 지정된 Color가 화면을 덮음 =>z 포지션이 타겟과 동일해져서 그렇다.MainCamaera의 z 포지션 -10을 유지시켜준다.target의 x,y 포지션만 동일하게 만든다. 2. 씬을 불러오지 못하는 문제 ❗Scene 'MiniGameScene' couldn't be loaded because it has not been added to the build settings or the AssetBundle has not been loaded. 라는 오류가 뜨며 씬을 불러오지 못했다. =>File - Build Settings에 들어가서 씬을 추가해주니 해결되었다. ..

[Unity/TIL] - 맵 그리기(타일맵)

강의에서 가장 재밌었던 맵 만들기. 타일맵(Tilemap)이란?2D 게임 개발에서 격자 기반 맵(Grid-Based Map) 을 쉽게 생성하고 관리할 수 있는 기능.타일(Tile)이라는 작은 사각형 조각들을 사용하여 게임 맵을 효율적으로 구성할 수 있다. 맵 그리기 빈 오브젝트에 그리드 컴포넌트를 추가해준다. 그러면 씬뷰에 격자무늬가 생긴다. 그리드 안에 맵을 구성할 요소들을 추가해준다.2D Object - Tilemap - Rectangular Tilemap Renderer의 Order in Layer을 변경해준다. Floor , Collision - Back - Front 0 - 10 - 200 씬뷰의 오른쪽에 있는 Open Tile Palette를 누른다. 또는 Window - 2D ..

[Unity/TIL] - Rigidbody / Quaternion / 이벤트함수 / 카메라 움직이기 / 오브젝트 무한생성

Rigidbody2D.velocity객체가 이동하는 속도와 방향을 Vector2 형태로 설정하거나 가져올 수 있다.Vector2 currentVelocity = rb.velocity; // 현재 속도 저장 (혹시 나중에 복원할 수도 있음)rb.velocity = new Vector2(5f, 0f); // 새로운 속도로 덮어씀 (오른쪽으로 이동)x 방향으로 초당 5 유닛의 속도로 이동*Vector2는 값 타입(struct) Mathf.Clamp(값, min, max)값을 특정 범위 내로 제한하는 함수float angle = Mathf.Clamp((_rigidbody.velocity.y * 10f), -90, 90);transform.rotation = Quaternion.Euler(0, 0, angle)..

[Unity/TIL] - 애니메이션, 트랜지션 추가하기 / GetComponent

애니메이션 추가하기애니메이션을 추가할 오브젝트를 선택 후window - Animation - Animation 클릭. Create New Clip 클릭해서 애니메이션을 만든다 Animator창에 Model 오브젝트에 적용한 flap, die 애니메이션 노드가 뜬다. 트랜지션 추가하기트랜지션이란 ? 하나의 애니메이션 상태에서 다른 상태로 넘어가는 연결선flap 우클릭 - Make TransitionParameters - + - int - IsDie 입력 flap -> die 트랜지션을IsDie - Equals - 1로 만든다.(=> IsDie가 1이 되면 die애니메이션이 실행된다) has exit time - Animator체크 - 애니메이션이 끝날 때까지 기다림체크 해제 - 즉시 다른 애니메이션으..

[Unity/TIL] - new로 생성한 객체는 클래스와 동기화 되나요?

1. 오늘의 질문 - new로 생성한 객체와 클래스는 동기화 되는가? class ItemItem 클래스에 만들어놓은 hpPotion 변수. class BattleUIBattleUI에서 객체를 생성하고 GetHpPotion함수를 이용해 hpPotion값을 추가해줬다. class Item 그러고 나서 다시 Item 클래스로 돌아와 hpPotion 값을 살펴보니증가하지 않고 여전히 3이었다. 2. 답변 또는 발견 - new를 통해 생성하면 (매개변수 없을시) 별개의 객체가 된다. 동기화되지 않는다. >> static을 붙여서 모든 클래스에서 공유되는 변수로 만든다. 3. 느낀점접근 한정자와 static과 객체생성 등 강의를 들을때는 이해했다고 생각했지만 실제 프로젝트를 진행해보니헷갈리고 어려운 점이..