본문 바로가기

분류 전체보기45

FindWithTag() 와 FindGameObjectsWithTag() FindWithTag()와 FindGameObjectsWithTag()는 모두 Unity에서 특정 태그(tag) 를 가진 오브젝트를 찾는 함수들이지만, 둘 사이에는 중요한 차이점이 있습니다.  1. FindWithTag()역할특정 태그를 가진 첫 번째 게임 오브젝트를 찾습니다. 반환 값단일 게임 오브젝트 (GameObject) 사용 예시이 함수는 씬에서 "Player" 태그를 가진 첫 번째 오브젝트를 찾고, 그 오브젝트를 반환합니다. 만약 태그를 가진 오브젝트가 없으면 null을 반환합니다. 이 함수는 단 하나의 오브젝트만 찾을 때 유용합니다.GameObject player = GameObject.FindWithTag("Player");  2. FindGameObjectsWithTag()역할특정 태그를 .. 2025. 3. 9.
Unity Inspector 에서 자동으로 컴포넌트 할당되는 원리 Unity는 Inspector 창에서 특정 컴포넌트 타입의 변수를 정의했을 때, 해당 게임 오브젝트가 여러 컴포넌트를 가지고 있어도, 지정된 타입에 맞는 컴포넌트만 자동으로 선택해서 할당합니다.이 원칙은 모든 컴포넌트에 동일하게 적용되며, Unity가 오브젝트를 관리하는 방식에서 비롯됩니다.  Transform 컴포넌트의 경우모든 게임 오브젝트는 기본적으로 Transform 컴포넌트를 가지고 있습니다.Transform은 오브젝트의 위치, 회전, 크기를 관리하는 컴포넌트로, 이 컴포넌트가 없는 오브젝트는 존재할 수 없습니다. 만약 당신이 스크립트에서 Transform 타입의 변수를 선언했다면, 이 변수는 Inspector 창에서 게임 오브젝트를 드래그해 넣을 때 오브젝트에 포함된 다른 컴포넌트는 무시하고,.. 2025. 3. 9.
8. yield return 에 대해 ( 그 외 ) IEnumerator 와 yield return 은 이해가 완벽히 되지 않더라도 사용하는데는 크게 지장이 없습니다.다만, 이게 왜 이렇게 될까 ? 기존 문법에도 안맞는것 같고 ... 그러다보면 코드가 잘 눈에 안들어옵니다.그러다보니, 내용이 좀 길어졌습니다. 그리고 아직 다 전달하지 못한 내용들은 여기에 두서없이 적어놓겠습니다. 보충편 : 코루틴과 IEnumerator의 숨겨진 개념들이전 글에서는 코루틴의 기본적인 개념과 활용법을 다루었습니다. 하지만 코루틴을 배우면서 헷갈릴 수 있는 개념들이 몇 가지 있습니다. 이번 보충편에서는 그동안 다루지 못했던 중요한 개념들을 정리해 보겠습니다.  IEnumerator는 함수 호출이 곧 객체 생성이다?코루틴을 처음 배울 때 가장 헷갈릴 수 있는 개념 중 하나가 바.. 2025. 3. 9.
7. yield return 에 대해 ( 최종화 : 최적화 ) 이제까지 yield return과 코루틴을 활용하는 방법을 알아보았습니다. 이번 글에서는 코루틴을 더 효율적으로 사용하는 방법과 InvokeRepeating() 과의 차이점을 살펴보겠습니다.  WaitForSeconds 캐싱으로 최적화하기코루틴에서 yield return new WaitForSeconds(time);을 반복적으로 호출하면 매번 새로운 객체가 생성되면서 GC(Garbage Collection) 부담이 생길 수 있습니다. 이를 방지하려면 WaitForSeconds 객체를 미리 생성해서 재사용하는 것이 좋습니다. 기존 방식 (비효율적)IEnumerator ExampleCoroutine(){ while (true) { Debug.Log("실행 중"); yiel.. 2025. 3. 9.
6. yield return 에 대해 ( Coroutine 을 중지하고자 할 때 ) 이전 글에서는 yield return을 활용하여 2D 스프라이트 애니메이션을 구현하는 방법을 다루었습니다. 이번 글에서는 코루틴을 중지하는 다양한 방법과 yield break 를 활용하는 방법을 살펴보겠습니다.  StopCoroutine()을 사용하여 코루틴 중지하기Unity에서는 StopCoroutine()을 사용하여 실행 중인 코루틴을 중지할 수 있습니다. StopCoroutine()에는 두 가지 방식이 있습니다. 1. 코루틴의 이름을 사용하여 중지void Start(){ StartCoroutine("ExampleCoroutine");}IEnumerator ExampleCoroutine(){ while (true) { Debug.Log("코루틴 실행 중"); .. 2025. 3. 9.
5. yield return 에 대해 ( 활용 02 ) 이전 글에서는 yield return을 사용하여 이동 애니메이션, 타이머, 이벤트 대기 같은 기능을 구현하는 방법을 알아보았습니다. 이번 글에서는 yield return을 활용하여 2D 스프라이트 애니메이션을 구현하는 방법을 다루겠습니다.  yield return을 사용한 스프라이트 애니메이션2D 게임에서는 특정 시간 간격마다 스프라이트를 변경하는 방식으로 애니메이션을 구현합니다. 코루틴을 사용하면 별도의 업데이트 로직 없이 자연스럽게 애니메이션을 처리할 수 있습니다. 아래는 yield return을 사용하여 스프라이트 애니메이션을 실행하는 예제입니다.IEnumerator PlaySpriteAnimation(SpriteRenderer renderer, Sprite[] frames, float frameT.. 2025. 3. 9.