728x90

Unity 59

[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] 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

[Unity] 구글 스프레드시트 데이터 자동으로 다운로드 및 SO에 적용

게임 개발 과정에서 데이터 관리와 업데이트는 매우 중요한 요소입니다. 특히 능력치나 게임 설정 데이터처럼 자주 변경되는 정보를 효율적으로 관리하기 위해 구글 스프레드시트를 활용하면 여러 면에서 장점을 얻을 수 있습니다.이번 글에서는 구글 스프레드시트에서 데이터를 다운로드해 TSV 형식으로 받아 JSON으로 변환한 후 이를 ScriptableObject(SO)에 자동으로 적용하는 전체 프로세스를 구현한 코드를 설명합니다. ScriptableObject(SO) 파일 스크립트 using UnityEngine;[CreateAssetMenu(fileName = "NewMonstere", menuName = "Scriptable Object/Monster Data", order = int.MaxValue)]publ..

Unity/코드 연구 2025.02.23

[Unity] Newtonsoft Json 설치 방법

Unity로 게임을 개발하다 보면, 데이터를 직렬화하고 역직렬화하기 위해 JSON 포맷을 사용하는 경우가 많습니다. 그러나 Unity의 기본 JsonUtility는 기능이 제한적이어서 복잡한 JSON 구조를 다루거나 다양한 옵션이 필요한 경우에는 보통 Newtonsoft.Json (Json.NET)이 사용됩니다.이 글에선 Unity Package Manager(UPM)를 이용하여 Newtonsoft.Json을 설치하는 방법을 설명합니다.1. Newtonsoft.Json강력한 기능: Json.NET은 복잡한 JSON 데이터 처리와 직렬화 및 역직렬화에 뛰어난 성능과 유연성을 제공합니다.IL2CPP 빌드 지원: Unity IL2CPP 빌드 환경에서도 안정적으로 동작합니다.업계 표준: 많은 개발자와 프로젝트에..

Unity/정보 2025.02.23

[Unity] Unity6 Physics 2D : 2D 콜라이더 병합, Rigidbody2D API 변경

Unity가 6로 넘어오면서 바뀐 2D물리관련이 있다고 합니다. 다음 네 가지 주요 변경사항에 대해 살펴봅니다.Composite Collider 2DHinge Joint 2DRigidbody2D의 변경된 APISlide Movement API1. Composite Collider 2D기존에는 박스나 타일맵 콜라이더만을 병합할 수 있었지만, Unity 6에서는 모든 유형의 콜라이더를 병합할 수 있습니다.특히, 단순히 영역을 합치는 것을 넘어 병합(Merge), 교차(Intersect), 차이( Difference), 뒤집기(Flip) 중 하나를 선택할 수 있어 더욱 다양한 형태의 콜라이더 제작이 가능합니다.또한, 컴포넌트 순서(Composite Order)에 따라 연산 순서가 결정되므로 인스펙터에서 원하는..

Unity/정보 2025.02.15

[Unity] Image와 RawImage 비교

Unity에서 UI를 만들 때 Image와 RawImage는 자주 사용되는 컴포넌트입니다. 이 두 가지는 비슷해 보이지만 용도와 기능에서 차이가 있습니다. 기본 개념ImageImage는 Unity의 UI에서 제공하는 컴포넌트로 Sprite를 사용하여 UI 이미지를 보여줍니다. Image컴포넌트는 상호작용할 수 있는 기능을 가지고 있습니다. 주요 특징Sprite 이미지를 사용이미지의 크기와 비율을 조정하는 기능 제공다양한 Fill 방식 지원. (채우기 비율, 방향)  RawImageRawImage는 Texture를 렌더링하기 위해 사용됩니다. 보통 비디오, 동적 텍스처 또는 일반 Sprite로 처리할 수 없는 렌더 텍스처(Render Texture)와 같은 동적인 요소를 렌더링할 때 활용됩니다.  주요 특..

Unity/정보 2025.01.16

[Unity] 사운드 매니저 구현 (Sound Manager)

게임에서 사운드는 플레이어의 몰입감을 높이는 중요한 요소입니다. 효과음, 배경음악 등을 효율적으로 관리하려면 사운드 매니저가 필요합니다. 이 글에선 String과 Enum을 이용하여 원하는 소리클립을 찾아 출력시키는 사운드 매니저를 알아보겠습니다. 1. 사운드 매니저 소개사운드 매니저는 게임 내 사운드를 관리하기 위해 사용하는 스크립트입니다.배경음악(BGM) 및 효과음(SFX) 관리성능 최적화를 위한 오디오 소스 재사용개발 편의성을 위한 인터페이스 제공2. string을 사용하는 사운드 매니저사운드를 이름으로 찾고 재생하는 방식은 직관적이며 간단합니다. 그러나 오타 가능성이 있고, 사운드 이름이 많아질수록 관리가 어려울 수 있습니다.아래 코드에선 오디오클립 파일이름이 저장, 검색에 쓰입니다. string..

Unity/코드 연구 2025.01.13

[Unity] 2D 무한 배경 구현하기

2D 게임을 개발할 때 배경을 자연스럽게 반복시키는 무한 배경이 필요할때가 있습니다.이번 글에서는 다양한 방법으로 2D 무한 배경을 구현하는 방법을 소개하겠습니다. 크게 UI, Sprite, Quad를 이용한 방법으로 나누어 설명합니다. UI를 이용한 뒷배경 처리 방법이 방법은 배경 이미지를 직접 이동시켜 움직이는 것처럼 보이도록 처리하는 방식입니다. 하지만 이미지가 이동할 때, 빈 공간이 생기는 것을 방지하기 위해 추가 이미지를 생성하여 연결해야 합니다.따라서 배경 이미지를 1개 더 복제하여 원본 이미지 옆에 붙이고, 두 이미지를 반복적으로 이동시켜 자연스러운 배경 스크롤 효과를 연출할 수 있습니다. Hierarchy 구조는 다음과 같이 설정합니다. Group_Background 객체를 부모로 하고, ..

Unity/정보 2025.01.12
728x90