728x90

전체 글 132

내일배움캠프 Unity - TIL : 25.04.04

오늘 학습한 내용게임 개발에서 MVP (Minimum Viable Product)란? MVP(Minimum Viable Product)는 최소한의 핵심 기능만을 갖춘 제품을 의미합니다. 게임 개발에서는 게임의 핵심적인 재미 요소를 빠르게 검증할 수 있도록 최소한의 기능만 포함한 초기 버전을 MVP라고 합니다. 즉, MVP는 완성된 게임이 아니라 개발 과정에서 핵심 요소를 검증하기 위한 프로토타입입니다. 게임 개발에서 MVP의 중요성 1) 핵심 게임 플레이 검증  게임이 재미있는지, 목표한 대로 게임 진행이 흘러가는지 확인하는 것이 중요합니다.예를 들어, 핵심 메커니즘이 ‘플랫포머 게임의 점프’라면, 점프의 타격감과 조작감이 중요한 요소가 됩니다.이 핵심 요소를 먼저 구현하고 피드백을 받아야 합니다.  2..

내일배움캠프 2025.04.04

내일배움캠프 Unity - TIL : 25.04.02

오늘 학습한 내용1) Instantiate 시 부모 객체를 설정하면 자식 순서가 플랫폼마다 다르게 적용되는 문제 WebGL에서는 자식 순서가 항상 0번이 되고, Windows 및 Unity 에디터에서는 마지막 순서가 됨.SetSiblingIndex를 활용하여 일관된 자식 순서를 유지하도록 수정.2) WebGL 빌드에서 예외 처리(Enable Exceptions) 설정이 필요한 문제 특정 상황에서 런타임 오류 발생하지만 오류 메시지가 출력되지 않음Project Settings > Player > Publishing Settings > Enable Exceptions → "Full" 또는 "Explicitly Thrown Exceptions Only"로 변경 문제 및 해결 과정1) 문제 (Instantiat..

내일배움캠프 2025.04.02

내일배움캠프 Unity - TIL : 25.03.27

오늘 학습한 내용1) Unity EditorWindow Unity에서는 EditorWindow를 활용하여 커스텀 에디터 창을 만들 수 있습니다.이번에 구글 스프레드시트에서 데이터를 다운로드하고 ScriptableObject(SO)를 생성 및 적용하는 툴을 제작하였습니다.이 툴을 통해 유닛(Unit) 및 몬스터(Monster) 데이터를 가져와 게임 내에서 활용할 수 있습니다. EditorWindow를 활용한 커스텀 툴 구현  using UnityEditor;using UnityEngine;using System.Collections.Generic;public class DataDownloaderWindow : EditorWindow{ private List myObj = new List(); [..

내일배움캠프 2025.03.27

내일배움캠프 Unity - TIL : 25.03.26

개요Unity의 기본 인스펙터는 자동으로 MonoBehaviour 스크립트의 변수를 표시하지만, 복잡한 기능을 추가하기에는 한계가 있습니다.이를 해결하기 위해 CustomEditor를 사용하면 사용자 정의 UI 및 기능을 인스펙터에 추가할 수 있습니다.CustomEditor를 활용한 기본적인 확장using UnityEditor;using UnityEngine;// MyComponent의 인스펙터를 확장하는 Custom Editor[CustomEditor(typeof(MyComponent))]public class MyComponentEditor : Editor{ public override void OnInspectorGUI() { // 기존 인스펙터 UI 유지 Dra..

내일배움캠프 2025.03.26

내일배움캠프 Unity - TIL : 25.03.25

오늘 학습한 내용1) 코루틴 new 키워드 사용 줄이기 yield return new WaitForSeconds(1f);를 반복적으로 호출하면 매번 새로운 객체를 생성하여 GC(가비지 컬렉션) 부담이 증가WaitForSeconds 객체를 미리 선언하고 재사용하는 방식으로 최적화 가능 2) 연산 순서 고려하기 벡터 연산과 스칼라 연산을 혼합할 때 연산 순서가 성능에 영향을 줄 수 있음speed * Time.deltaTime * dir 방식이 dir * speed * Time.deltaTime보다 연산 효율이 높음스칼라 연산을 먼저 수행하고 벡터 연산을 나중에 실행하는 것이 성능에 유리함문제 및 해결 과정1) 문제 (코루틴을 사용할때 성능 저하 문제)  yield return new WaitForSecond..

내일배움캠프 2025.03.25

[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
728x90