본문 바로가기

Unity49

Player Input 컴포넌트를 꼭 써야할까? Unity의 Input System은 기존의 Input Manager를 대체하기 위해 도입된 Unity의 새로운 입력 시스템입니다. 그리고 대부분은 아마 이렇게 시작할 것입니다. Player Input 컴포넌트를 추가하고, Input Action Asset을 연결하는 방식왜냐하면 Unity의 공식 문서나 각종 튜토리얼 영상들이 “Player Input 컴포넌트” 를 기본 사용법처럼 소개하기 때문입니다. 하지만 실제로는… Player Input 컴포넌트를 붙이지 않아도 Input System을 사용할 수 있습니다. Player Input 컴포넌트는 필수가 아닙니다.먼저, Player Input 컴포넌트를 추가하는 과정을 간단히 살펴보겠습니다.• Add Component > Player Input 컴포.. 2025. 7. 13.
Unity 패키지(.unitypackage) 파일 다루는 방법과 주의할 점 Unity 프로젝트를 다른 사람과 공유하거나, 자주 쓰는 에셋을 백업할 때 .unitypackage 파일을 사용합니다.하지만 무심코 import했다가 기존 파일이 의도치 않게 덮어써지는 사고가 발생할 수 있으니 주의가 필요합니다.이 글에서는 export / import 방법과 함께, 덮어쓰기 이슈의 원인과 안전하게 사용하는 팁까지 정리합니다. Unity 패키지 Export 방법 Unity에서 .unitypackage 파일을 만드는 방법은 간단합니다. • 먼저 Assets 폴더 내에서 내보내고 싶은 폴더나 파일을 선택합니다. • Assets 폴더 전체를 내보내고 싶다면, Project 편집 창 > Assets 폴더를 선택합니다.• 프로젝트 창 빈공간에 마우스 우클릭 메뉴 > Export Pac.. 2025. 7. 12.
Unity 에서 Serializable 사용 예 Unity에서 사용자 정의 클래스나 구조체를 인스펙터에 보여주고 싶을 때 반드시 알아야 할 키워드가 바로 [System.Serializable]입니다. 이 키워드는 Unity의 직렬화(Serialization) 시스템에 해당 타입을 등록하겠다는 선언입니다. 언제 필요할까?Unity는 기본적으로 public 필드나 [SerializeField]가 붙은 필드만 인스펙터에 노출합니다. 그런데 그 필드가 클래스나 구조체일 경우, Unity는 내부 내용을 자동으로 보여주지 않습니다. 이때 [System.Serializable]이 있어야 내부 값들도 인스펙터에서 펼쳐서 볼 수 있게 됩니다. 예제 코드using System;[Serializable]public class DropInfo{ public float.. 2025. 7. 3.
오브젝트를 태그로 찾고자 할 때 : FindWithTag() FindWithTag() 은 유니티에서 특정 태그를 가진 오브젝트를 찾을 때, 사용하는 함수입니다.그런데, FindGameObjectWithTag() 라는 함수도 존재합니다.결론부터 말씀드리자면, 두 함수는 결국 같은 기능을 합니다. 내부 구현public static GameObject FindWithTag(string tag){ return FindGameObjectWithTag(tag);} Unity 엔진 내부에서 FindWithTag()는 결국 FindGameObjectWithTag()를 호출합니다.그리고 이 FindGameObjectWithTag()는 unsafe 키워드가 붙은, Unity의 엔진 내부 함수입니다. 즉, FindGameObjectWithTag()는 존재하긴 하지만 문서화되지.. 2025. 7. 2.
유니티에서 yield break 와 코루틴에서 제거되는 시점 Unity에서 코루틴은 IEnumerator 객체를 통해 실행되며, Unity는 이 객체들을 내부적으로 리스트에 등록하여 매 프레임마다 검사하고 실행 조건이 충족되면 이어서 실행합니다. yield break 란?yield break는 코루틴 내부에서 즉시 실행을 종료하는 명령어입니다.이것이 실행되면 Unity는 해당 코루틴을 더 이상 실행하지 않도록 처리하며, 코루틴 리스트에서 안전하게 제거합니다.IEnumerator MyRoutine(){ Debug.Log("Start"); if (SomethingWrong()) { Debug.Log("문제 발생 → 코루틴 중단"); yield break; } yield return new WaitForSeconds.. 2025. 7. 2.
유니티에서 물체를 목적지까지 이동시키는 방법 유니티에서 물체를 목적지까지 이동시키고 싶을 때가 있습니다.그리고 도착 여부를 판별해야 할 때도 있습니다. gameObject 자체에는 이런 기능이 없기 때문에, transform의 위치값을 직접 이동시켜야 합니다.이럴 때 사용하는 함수가 바로 Vector3.MoveTowards()입니다. 함수 원형 Vector3 MoveTowards(Vector3 current, Vector3 target, float maxDistanceDelta) • current : 현재 위치• target : 목표 위치• maxDistanceDelta : 이번 프레임에서 이동할 최대 거리 예시 코드 transform.position = Vector3.MoveTowards(transform.position, targe.. 2025. 7. 1.