728x90

분류 전체보기 137

[Unity] 확장메서드

Unity 개발을 하다 보면 특정 기능을 여러 스크립트에서 반복적으로 사용해야 하는 경우가 많습니다. 이때 확장 메서드(Extension Method) 를 활용하면 기존 클래스의 코드를 수정하지 않고도 기능을 추가할 수 있어 코드의 재사용성과 가독성을 크게 향상시킬 수 있습니다. 1. 확장 메서드란?확장 메서드는 C#의 기능 중 하나로, 기존 클래스의 코드를 수정하지 않고도 새로운 메서드를 추가할 수 있는 기능입니다. 주로 static 클래스를 이용하여 특정 타입(클래스, 구조체 등)에 새로운 메서드를 정의할 수 있습니다. 확장 메서드의 특징기존 클래스를 수정하지 않고도 새로운 기능 추가 가능static 클래스를 사용하며, 확장 대상 메서드는 this 키워드를 사용하여 정의재사용성이 높아 코드 중복을 줄..

Unity/정보 2025.03.23

[Unity] transform.root - 최상위 객체 찾기

Unity에서 충돌 감지를 할 때 하위 오브젝트가 부딪히더라도 최상위 부모 오브젝트(Player)를 찾아야 하는 경우가 있습니다. 예를 들어, PlayerController가 Player 오브젝트에 붙어 있고 플레이어의 손이나 발 같은 하위 오브젝트가 충돌을 감지할 때, 어떻게 최상위 PlayerController에 접근할 수 있을까요? 1. 기존 방식의 문제점보통 GetComponentInParent() 또는 FindObjectOfType()를 사용해서 부모 오브젝트를 찾곤 합니다. 하지만 이러한 방식에는 몇 가지 단점이 있습니다.FindObjectOfType()는 씬 전체에서 오브젝트를 검색하므로 성능 저하가 발생할 수 있음.GetComponentInParent()는 부모 계층을 순차적으로 탐색하기 ..

Unity/정보 2025.03.23

[Unity] AudioSource.PlayClipAtPoint

Unity에서는 AudioSource.PlayClipAtPoint를 사용하면 간단하게 특정 위치에서 효과음을 재생할 수 있습니다. 이번 글에서는 PlayClipAtPoint의 장점과 한계를 살펴보고, 필요한 경우 대체할 수 있는 방법까지 다뤄보겠습니다.1. 기존 방식일반적으로 Unity에서 효과음을 재생하려면 다음과 같은 방식으로 AudioSource 컴포넌트를 직접 추가하고 관리해야 합니다.사전에 AudioSource가 포함된 GameObject를 배치해야 함스크립트에서 AudioSource를 생성하고 Play()로 소리를 재생시켜야함사운드가 끝난 후 GameObject를 삭제 또는 비활성화해야 함이러한 방식은 효과음이 많아질수록 관리가 복잡해질 수 있습니다. 2. AudioSource.PlayClip..

Unity/정보 2025.03.23

내일배움캠프 Unity - TIL : 25.03.19

오늘 학습한 내용1) Fog 설정 시 빌드에서 적용되지 않는 문제 해결 Unity 에디터에서는 Fog가 정상적으로 보이지만 빌드 후에는 적용되지 않는 문제가 발생했다.이를 해결하기 위해 Project Settings > Graphics에서 Fog 설정을 Auto에서 Custom으로 변경하고, 사용 중인 FogMode 옵션만 체크하는 방식으로 수정했다.문제 및 해결 과정1) 문제 (Fog가 빌드 후 적용되지 않는 문제) Unity 에디터에서는 Fog가 정상적으로 보였으나 빌드 후 실행 시 Fog가 사라지는 현상이 발생했다.Project Settings에서 Fog 설정이 Auto로 되어 있어, 빌드된 환경에서는 특정 플랫폼에서 자동으로 Fog가 비활성화되는 문제가 있었음.  시도한 해결 방법Project S..

내일배움캠프 2025.03.19

내일배움캠프 Unity - TIL : 25.03.18

오늘 학습한 내용1) 3D 오브젝트 최적화와 Mesh Combiner 활용 씬에 많은 오브젝트를 배치하면서 최적화를 고민하고 적용해 보았다.Mesh Combiner 에셋을 이용하여 비슷한 부류의 오브젝트들을 하나의 메쉬로 병합해 최적화를 시도했다.하지만 객체의 위치를 고려하지 않고 단순히 비슷한 것들끼리 묶다 보니 오클루전 컬링(Occlusion Culling)을 고려하지 못했다.문제 및 해결 과정1) 문제 (Mesh Combiner 적용 후 Batches 수 증가) 비슷한 오브젝트끼리 무작정 병합했더니 Batches 수가 오히려 증가하는 현상이 발생했다.오클루전 컬링이 정상적으로 작동하지 않아, 보이지 않는 오브젝트들도 렌더링되는 문제가 발생했다. 시도한 해결 방법메쉬 병합을 적용하기 전과 후의 Bat..

내일배움캠프 2025.03.18

내일배움캠프 Unity - TIL : 25.03.14

오늘 학습한 내용점프 후 벽과의 충돌 보정하기 3D 캐릭터가 점프 후 벽에 닿으면 멈추거나 예상과 다른 물리적 반응을 보이는 경우가 있다. 예를 들어, 오버워치에서는 캐릭터가 올라갈 수 없는 건물 지붕 등에 도달하면 떠 있는 상태로 천천히 미끄러지는 효과가 적용된다. 이를 참고하여, 점프하거나 떨어지는 등 공중에 체공하는 동안 보다 자연스러운 물리적 반응이 이루어지도록 보정해 보았다.  문제 및 해결 과정문제 (점프 후 벽에 부딪히면 캐릭터가 멈춰버리는 현상) 점프 후 벽에 부딪히면 캐릭터가 멈추거나 특정 벽에 붙어서 움직이지 않는 현상 발생.캐릭터가 기대한 대로 자연스럽게 밀려나거나 미끄러지는 동작이 구현되지 않음.  시도한 해결 방법 지면에서는 전용 Physics Material 적용 → 정상적인 물..

내일배움캠프 2025.03.14

내일배움캠프 Unity - TIL : 25.03.13

오늘 학습한 내용1) 화면 전환 효과를 위한 CanvasGroup 활용  기존에는 SetActive(false) 또는 Animator를 활용하여 화면 전환 효과를 구현했지만, CanvasGroup을 사용하면 더욱 간단하고 효과적으로 페이드인/페이드아웃을 적용할 수 있다는 것을 학습하였습니다. 방법:UI의 Panel에 CanvasGroup 컴포넌트를 추가alpha 값을 조절하여 투명도를 변경blocksRaycasts와 interactable을 활용하여 클릭 이벤트 및 인터랙션 제어적용 예시 (코루틴 활용)IEnumerator Fade(CanvasGroup canvasGroup, float targetAlpha, float duration){ float startAlpha = canvasGroup.al..

내일배움캠프 2025.03.13

내일배움캠프 Unity - TIL : 25.03.12

오늘 학습한 내용1) ScriptableObject에서 기능 구현기존에는 ScriptableObject를 오직 데이터(변수 값)를 저장하는 용도로만 사용하였으나,아이템의 기능까지 ScriptableObject에서 구현하여 활용하는 방식도 가능하다는 점을 알게 되었습니다.이를 통해 별도의 스크립트에서 아이템 기능을 따로 구현할 필요 없이,각 아이템이 자신만의 효과를 ScriptableObject 내에서 정의하고 실행할 수 있습니다.문제 및 해결 과정1) 문제 ScriptableObject를 단순히 데이터 저장소로만 사용했기 때문에,아이템의 기능을 별도의 아이템 관리 스크립트에서 구현해야 했습니다.여러 종류의 아이템이 존재할 경우, 관리 코드가 복잡해지고 유지보수가 어려워질 가능성이 있었습니다.  시도한 해..

내일배움캠프 2025.03.12

[Unity] Script Execution Order 설정 (스크립트별 실행 순서 설정)

Unity에서 여러 스크립트가 실행될 때 Awake(), OnEnable(), Start() 등의 초기화 함수가 실행되는 순서는 중요합니다. 특히 Awake()가 OnEnable()보다 항상 먼저 실행된다고 보장되지 않는 경우가 있어 예상치 못한 Null 참조 오류가 발생할 수도 있습니다.이번 글에서는 Script Execution Order(스크립트 실행 순서)를 설정하여 이러한 문제를 해결하는 방법을 알아보겠습니다.1. Unity의 기본 실행 순서Unity는 게임 오브젝트가 활성화될 때 특정 순서대로 메서드를 호출합니다.Awake()OnEnable()Start()기타 업데이트 관련 메서드 (Update, FixedUpdate 등)보통 Awake()에서 객체의 참조를 설정하고, OnEnable()에서는..

Unity/정보 2025.03.12
728x90