본문 바로가기

전체 글778

Unity6 C# 변수와 자료형, public, private, SerializeField 사용 방법 ▣ 이번 글에서는 C#에서 데이터를 저장하는변수와 자료형을 알아보고,Unity에서 자주 사용하는publicprivate[SerializeField]의 차이를 알아보겠습니다.앞 글에서는 C# Script를 만들고GameObject에 Component로 연결했습니다.이번에는 Script 안에실제 데이터를 저장해보겠습니다.게임에는 굉장히 많은 데이터가 필요합니다.예를 들어 Player라면체력이동 속도공격력이름사망 여부현재 위치등이 있을 수 있습니다.C#에서는 이런 값을변수에 저장해서 사용합니다.예를 들어HP = 100MoveSpeed = 5PlayerName = "Player"IsDead = false같은 데이터를 저장할 수 있습니다.그리고 Unity에서는C# Script의 일부 변수를Inspector에 표시.. 2026. 9. 23.
Unity6 C# Script 생성하고 GameObject에 연결하기 ▣ 이번 글부터 Unity에서 사용하는C# Script를 알아보겠습니다.지금까지는 Unity Editor에서GameObject 생성Transform 수정Component 추가Prefab 생성등을 직접 설정했습니다.하지만 실제 게임을 만들려면Player가 움직이고,Enemy가 공격하고,Item을 획득하고,점수가 증가하는 것처럼게임의 동작을 만들어야 합니다.이런 기능을 구현할 때Unity에서는 주로C#을 사용합니다.예를 들어Player 이동Enemy AI공격아이템 획득문 열기점수 계산게임 시작 / 종료같은 기능을C# Script로 구현할 수 있습니다.이번 글에서는 아직 복잡한 C# 문법을 배우지 않습니다.먼저C# Script 생성↓Visual Studio에서 Script 열기↓MonoBehaviour 구조 .. 2026. 9. 23.
Unity6 에셋과 프리팹 생성 및 관리 방법 ▣ 이번 글에서는 Unity 프로젝트에서 사용하는에셋과 프리팹이 무엇인지 알아보고,직접 프리팹을 만들어보겠습니다.그리고프리팹 에셋프리팹 인스턴스오버라이드ApplyRevert의 차이도 알아보겠습니다.마지막에는 프로젝트가 커졌을 때에셋을 찾기 쉽도록폴더와 이름을 정리하는 기본적인 방법도 살펴보겠습니다.앞에서 Unity 프로젝트 폴더 구조를 알아보면서Assets폴더를 확인했습니다.그리고 Scene을 공부하면서Project Window에 저장된 Scene도하나의 에셋이라는 것을 알아봤습니다.Unity 프로젝트를 만들다 보면Project Window에는 점점 많은 파일이 생깁니다.예를 들어SceneC# ScriptTextureSpriteMaterial3D ModelAudioAnimationPrefab등입니다.이런.. 2026. 9. 23.
언리얼엔진5 C++ NewObject CreateDefaultSubobject SpawnActor SpawnActorDeferred 차이 ▣ 언리얼 엔진 C++에서 객체를 만들다 보면 여러 생성 함수를 만나게 됩니다.NewObjectCreateDefaultSubobjectSpawnActorSpawnActorDeferred이름만 보면 전부 객체를 만드는 함수처럼 보입니다.하지만 각각 사용하는 대상과 시점이 다릅니다.처음에는 다음처럼 기억하면 이해하기 쉽습니다.NewObject→ 게임 실행 중 UObject 생성CreateDefaultSubobject→ 생성자에서 기본 Subobject / Component 생성SpawnActor→ 게임 실행 중 Actor를 World에 생성SpawnActorDeferred→ Actor를 생성하되 초기값을 넣은 뒤 생성 과정을 마무리이번 글에서는 Unreal Engine 5.8을 기준으로 네 함수의 차이와 실.. 2026. 9. 23.
Unity6 Edit Mode와 Play Mode 차이 알아보기 ▣ 이번 글에서는 Unity Editor의Edit Mode와 Play Mode의 차이를 알아보겠습니다.Unity로 게임을 만들 때는계속 다음 작업을 반복하게 됩니다.게임 제작↓실행↓테스트↓문제 확인↓수정↓다시 실행Unity Editor에서는게임을 제작하고 편집하는 상태를Edit Mode라고 하고,Editor 안에서 게임을 직접 실행해서 테스트하는 상태를Play Mode라고 합니다.간단하게 먼저 정리하면Edit Mode→ 게임을 만드는 상태Play Mode→ 만든 게임을 실행해서 테스트하는 상태라고 생각하면 됩니다.특히 Unity를 처음 사용할 때는Play Mode에서 Inspector 값을 수정한 다음Play Mode를 종료했더니수정한 값이 다시 원래대로 돌아오는 경우가 있습니다.이것은 Unity에서 굉.. 2026. 9. 22.
Unity6 Scene 생성, 저장, 전환 기본 ▣ 이번 글에서는 Unity Project에서새로운 Scene을 생성하고,Scene을 저장하고,여러 Scene 사이를 전환하는 기본적인 방법을 알아보겠습니다.앞에서 Scene은GameObject를 배치하고 게임의 콘텐츠를 구성하는 단위라고 알아봤습니다.예를 들어 게임에TitleStage01Stage02Ending같은 화면이나 Stage가 있다면각각 별도의 Scene으로 구성할 수 있습니다.간단하게 보면Unity Project├─ Title Scene├─ Stage01 Scene├─ Stage02 Scene└─ Ending Scene형태입니다.Scene을 여러 개 사용하기 전에먼저Scene 생성Scene 저장Scene 열기Scene 전환방법부터 알아보겠습니다.1. Scene 다시 알아보기Scene은게임이나.. 2026. 9. 22.
언리얼엔진5 C++ GameInstance와 GameInstanceSubsystem으로 전역 데이터 관리하기 ▣ 게임을 만들다 보면 Level이 변경되어도 유지해야 하는 데이터가 필요합니다.예를 들어MainMenu↓CharacterSelect↓Stage01↓Stage02순서로 Level을 이동한다고 하겠습니다.이때 다음과 같은 데이터는 Level이 변경되어도 유지해야 할 수 있습니다.선택한 캐릭터선택한 난이도현재 Run Score현재 Stage 번호게임 세션 중 유지해야 하는 설정값일반적인 Actor나 GameMode에 이런 데이터를 저장하면 Level이 변경될 때 해당 객체도 다시 생성되기 때문에 데이터가 사라질 수 있습니다.이럴 때 사용할 수 있는 것이UGameInstance와UGameInstanceSubsystem입니다.이번 글에서는 Unreal Engine 5.8을 기준으로GameInstance에 데이터.. 2026. 9. 22.
Unity6 Gizmo와 Pivot, Center 알아보기 ▣ 이번 글에서는 Unity Scene View에서 GameObject를 조작할 때 사용하는Gizmo와Pivot,Center의 차이를 알아보겠습니다.앞에서는 Transform의PositionRotationScale을 이용해서 GameObject를 이동하고,회전하고,크기를 변경하는 방법을 알아봤습니다.Scene View에서는 Inspector에 숫자를 직접 입력하지 않아도GameObject를 선택한 다음MoveRotateScaleTool을 이용해서 Transform을 조작할 수 있습니다.이때 Scene View에 나타나는 축과 Handle을 이용해서GameObject를 움직이게 됩니다.그리고 Tool Settings에는PivotCenter라는 설정이 있습니다.처음에는 두 설정을 바꿔도 GameObject .. 2026. 9. 21.
Unity6 Tag와 Layer 차이와 사용 방법 ▣ 이번 글에서는 Unity에서 GameObject를 구분할 때 사용하는Tag와 Layer의 차이와 사용 방법을 알아보겠습니다.Unity로 게임을 만들다 보면Scene에 수많은 GameObject가 생깁니다.예를 들어PlayerEnemyGroundItemWeaponDoorNPC같은 Object가 있을 수 있습니다.이때 단순히 GameObject 이름만 이용해서각 Object의 역할을 구분하는 것보다Unity에서 제공하는TagLayer를 사용하는 경우가 많습니다.처음에는 둘 다 GameObject를 분류하는 기능처럼 보여서차이를 이해하기 어려울 수 있습니다.가장 간단하게 먼저 정리하면Tag→ 이 GameObject가 무엇인지 구분Layer→ 이 GameObject를 어떤 시스템에서 처리할 것인지 구분이.. 2026. 9. 21.
언리얼엔진5 C++ PlayerController Possess UnPossess로 Pawn 제어하기 ▣ PlayerController는 현재 자신이 제어할 Pawn을 변경할 수 있습니다.예를 들어 게임을 만들다 보면플레이어 캐릭터↓차량 탑승↓차량 조작↓차량에서 내림↓다시 플레이어 캐릭터 조작처럼 플레이어의 입력 주체를 바꿔야 하는 경우가 있습니다.또는캐릭터 사망↓새로운 캐릭터 생성↓새로운 캐릭터 조종이나Player↓드론 조종↓Player 복귀같은 시스템에서도 같은 구조를 사용할 수 있습니다.이때 사용하는 대표적인 함수가Possess()와UnPossess()입니다.이번 글에서는 Unreal Engine 5.8을 기준으로PlayerController에서 현재 Pawn 확인Possess로 다른 Pawn 제어UnPossess로 제어 해제OnPossess와 OnUnPossessPawn 교체Auto Possess.. 2026. 9. 21.
언리얼엔진5 C++ Sprint Crouch Dash와 Stamina 캐릭터 이동 시스템 구현 ▣ 기본적인 캐릭터 이동을 만들었다면 다음으로 자주 추가하게 되는 기능이 있습니다.걷기달리기 Sprint앉기 Crouch대시 Dash스태미나 StaminaTPS, 액션, RPG 등 캐릭터를 직접 조작하는 게임에서는 자주 사용하는 기능입니다.이번에는 기존 Enhanced Input 이동 코드에Shift→ SprintC→ CrouchLeft Alt→ Dash입력을 추가하고,Sprint→ Stamina 지속 소모Dash→ Stamina 일정량 소모Stamina가 없으면→ Sprint / Dash 제한일반 이동→ Stamina 회복까지 하나의 캐릭터 이동 시스템으로 만들어보겠습니다.Unreal Engine 5.8을 기준으로 작성합니다.구현할 전체 구조최종 흐름은 다음과 같습니다.기본 이동│├─ Sprint│ .. 2026. 9. 21.
Unity6 GameObject 생성, 복제, 삭제, 활성화 방법 ▣ 이번 글에서는 Unity Scene을 구성하는 기본 객체인GameObject를 생성하고,복제하고,삭제하고,활성화 / 비활성화하는 방법을 알아보겠습니다.앞에서 Unity의 기본 구조를Scene↓GameObject↓Component형태로 알아봤습니다.그리고 GameObject에는 기본적으로Transform Component가 존재하고,Position,Rotation,Scale을 이용해서 위치와 방향, 크기를 변경할 수 있다는 것도 확인했습니다.게임을 만들다 보면 Scene에PlayerEnemyItemGroundCameraLightDoor같은 GameObject를 계속 만들게 됩니다.같은 Object가 여러 개 필요하면 복제하고,필요하지 않은 Object는 삭제할 수도 있습니다.게임 진행 상황에 따라보이게.. 2026. 9. 18.
Unity6 World 좌표와 Local 좌표 알아보기 ▣ 이번 글에서는 Unity의 Transform에서 자주 사용하는World 좌표와 Local 좌표의 차이를 알아보겠습니다.앞 글에서는 Transform Component의PositionRotationScale을 이용해서 GameObject의 위치와 회전, 크기를 변경해봤습니다.GameObject 하나만 사용할 때는 Position 값을 그대로 보면 되기 때문에좌표가 크게 어렵지 않습니다.하지만 GameObject 사이에 Parent와 Child 관계가 생기면다음과 같은 상황을 볼 수 있습니다.Scene에서 보는 위치와Inspector에 표시되는 Position이 서로 달라 보인다.이런 차이를 이해하려면World CoordinateLocal Coordinate개념을 알아야 합니다.Unity 공식 문서에서도.. 2026. 9. 18.
언리얼엔진5 C++ ActorComponent로 재사용 가능한 게임 기능 만들기 ▣ 게임을 만들다 보면 서로 다른 Actor에서 같은 기능이 필요한 경우가 많습니다.예를 들어Player→ 공격 CooldownEnemy→ 공격 CooldownWeapon→ 발사 CooldownSkill→ 사용 Cooldown처럼 사용하는 Actor는 서로 다르지만 실제 필요한 기능은 비슷할 수 있습니다.이 기능을 각각의 클래스에 직접 구현하면APlayerCharacter→ Cooldown 변수→ Timer→ Cooldown 함수AEnemyCharacter→ Cooldown 변수→ Timer→ Cooldown 함수AWeapon→ Cooldown 변수→ Timer→ Cooldown 함수처럼 같은 코드가 반복됩니다.이럴 때 공통 기능을 UActorComponent 하나로 분리하면Player└─ ActionC.. 2026. 9. 18.
언리얼엔진5 C++ TWeakObjectPtr 사용법과 UObject 안전하게 참조하기 ▣ 게임을 만들다 보면 다른 Actor나 UObject를 잠시 기억해두고 나중에 다시 사용해야 하는 경우가 많습니다.예를 들어 AI가 현재 공격할 Player를 기억한다고 하겠습니다.Enemy↓Player Target 저장↓Player 추적↓Player 공격그런데 Target으로 저장한 Player가 먼저 사망해서 제거되면 어떻게 될까요?Enemy 입장에서는저 Actor가 아직 존재하는가?이미 Destroy되었는가?계속 사용해도 되는가?를 확인해야 합니다.이처럼 다른 UObject의 수명을 직접 책임지지 않으면서객체가 살아 있는 동안만 안전하게 참조하고 싶을 때 사용할 수 있는 것이TWeakObjectPtr입니다.이번 글에서는 Unreal Engine 5.8을 기준으로 TWeakObjectPtr의 사용 .. 2026. 9. 18.
언리얼엔진5 C++ UObject와 Actor 차이, 객체 생명주기와 Owner Instigator 이해하기 ▣ 언리얼 엔진 C++ 코드를 보다 보면 대부분의 클래스 앞에UAF같은 접두사가 붙어 있는 것을 볼 수 있습니다.예를 들어UObjectUActorComponentUUserWidgetAActorAPawnACharacter같은 클래스입니다.이 중 Unreal Engine의 객체 시스템을 이해할 때 가장 먼저 구분해야 하는 것이UObjectAActor입니다.그리고 Actor를 사용하기 시작하면 자연스럽게GetOwner()GetInstigator()GetInstigatorController()같은 함수도 만나게 됩니다.특히 총기, Projectile, Damage 시스템을 만들다 보면이 총알은 누가 만들었는가?이 무기는 누구의 것인가?이 데미지를 발생시킨 실제 캐릭터는 누구인가?를 구분해야 합니다.이번 글에서는.. 2026. 9. 17.
언리얼엔진5 C++ Widget Blueprint 버튼 찾고 클릭 후 2초 비활성화하기 ▣ 이미 만들어져 있는 Widget Blueprint가 있고, 그 안에 있는 Button을 C++에서 찾아서 사용해야 하는 경우가 있습니다.예를 들어 기존에WB_Main이라는 Widget Blueprint가 있고,Designer 안에ActionButton이라는 Button이 있다고 하겠습니다.이번에는 Widget Blueprint를 새로 만들거나 C++ UserWidget 클래스를 부모로 만드는 것이 아니라이미 만들어져 있는 WB_Main↓C++에서 Widget Instance 사용↓이름으로 ActionButton 찾기↓OnClicked 함수 연결↓Button 클릭↓원하는 함수 호출↓Button 2초간 비활성화↓2초 후 다시 활성화하는 방법을 알아보겠습니다.이 글은 Unreal Engine 5.8을 기준.. 2026. 9. 17.
Unity6 Transform Position, Rotation, Scale 사용 방법 ▣ 이번 글에서는 모든 GameObject에 기본적으로 존재하는Transform Component를 알아보고,PositionRotationScale을 이용해서 GameObject의위치,회전,크기를 변경하는 방법을 알아보겠습니다.앞 글에서 Unity의 기본 구조를Scene↓GameObject↓Component형태로 알아봤습니다.그리고 GameObject를 생성하면기본적으로 Transform Component가 존재한다는 것도 확인했습니다.Transform은 Unity에서 굉장히 자주 사용하는 Component입니다.예를 들어Player 위치 이동Camera 회전Door 회전Item 크기 변경Enemy 배치건물 배치같은 작업에서 Transform을 사용합니다.Unity 공식 문서에서도 Transform은 G.. 2026. 9. 17.
Unity6 Scene과 GameObject, Component 이해하기 ▣ 이번 글에서는 Unity에서 가장 기본이 되는Scene,GameObject,Component의 관계를 알아보겠습니다. 이전에 Unity Editor의 기본 화면과 조작 방법을 알아보면서Cube를 하나 생성해봤습니다.Cube를 선택하면Hierarchy에는 Cube가 표시되고,Inspector에는 여러 Component가 표시됐습니다.처음에는 이것들이 서로 다른 기능처럼 보일 수 있지만Unity의 기본 구조를 간단하게 정리하면Project↓Scene↓GameObject↓Component형태로 이해할 수 있습니다.예를 들어 3D 게임 Stage 하나를 만든다고 생각해보겠습니다.Main Scene├─ Player├─ Enemy├─ Main Camera├─ Directional Light├─ Ground└─ .. 2026. 9. 17.
Unity6 Git과 GitHub로 프로젝트 백업하는 방법 ▣ 이번 글에서는 Git과 GitHub를 이용해서Unity Project를 백업하고 변경 내용을 관리하는 방법을 알아보겠습니다.Unity Project를 만들다 보면C# Script 수정Scene 수정Prefab 수정Material 수정Project Settings 변경Package 추가등 수많은 파일이 계속 변경됩니다.게임을 만들다가 잘못 수정했거나파일을 실수로 삭제하면이전 상태로 돌아가야 하는 경우도 있습니다.또 컴퓨터에 문제가 생겼을 때Project가 한 곳에만 저장되어 있다면프로젝트 전체를 잃어버릴 수도 있습니다.그래서 게임 개발에서는Git+GitHub같은 Version Control System을 이용해서Project의 변경 내용을 기록하고원격 저장소에도 보관하는 방법을 많이 사용합니다.1. G.. 2026. 9. 16.
Unity6 프로젝트 폴더 구조 알아보기 ▣ Unity Project를 생성하면 프로젝트 폴더 안에 여러 폴더와 파일이 만들어집니다.처음 프로젝트 폴더를 열어보면 다음과 같은 이름들을 볼 수 있습니다.MyProject├─ Assets├─ Library├─ Logs├─ Packages├─ ProjectSettings├─ Temp└─ UserSettingsProject를 실행한 상태나 Unity Version,사용하고 있는 Package 등에 따라 일부 폴더는 추가되거나 보이지 않을 수도 있습니다.Unity 공식 문서에서도 프로젝트를 생성하면 기본적으로AssetsLibraryLogsPackagesProjectSettingsTemp등의 폴더가 생성된다고 설명하고 있습니다.처음에는 폴더가 많아 보여 복잡하지만우선 다음 세 개를 가장 중요하게 생각하면 .. 2026. 9. 16.
Unity6 공식 Manual과 Scripting API 보는 방법 ▣ Unity를 공부하다 보면 인터넷 검색이나 영상만으로 해결하기 어려운 문제가 생깁니다.예를 들어 다음과 같은 상황입니다.Rigidbody는 정확히 어떤 Component인가?AddForce() 함수는 어떻게 사용하는가?Transform.position은 어떤 값을 사용하는가?이 함수가 반환하는 값은 무엇인가?Input System의 현재 사용법은 무엇인가?예전에 작성된 Unity 코드가 Unity 6에서도 사용할 수 있는가?Cinemachine 2와 Cinemachine 3은 무엇이 다른가?이럴 때 가장 먼저 확인하면 좋은 자료가Unity에서 제공하는 공식 Documentation입니다.Unity 공식 자료는 크게 다음처럼 나누어 생각하면 이해하기 쉽습니다.Unity Manual→ Unity 기능의 .. 2026. 9. 16.
Unity6 Package Manager와 Project Settings 사용 방법 ▣ 이번 글에서는 Unity 프로젝트의 기능을 추가하거나 관리할 때 사용하는Package Manager와 Project Settings,그리고 Unity Editor의 개인 작업 환경을 설정하는 Preferences에 대해 알아보겠습니다.Unity를 사용하다 보면 앞으로Input System 설치Cinemachine 설치AI Navigation 설치XR Interaction Toolkit 설치프로젝트 Physics 설정게임 이름 설정화면 설정Visual Studio 연결같은 작업을 하게 됩니다.이 기능들이 모두 같은 곳에서 설정되는 것은 아닙니다.크게 구분하면Package Manager→ Unity 프로젝트에 기능과 Package 추가Project Settings→ 현재 프로젝트의 전역 설정 관리Pref.. 2026. 9. 16.
언리얼엔진5 Modeling Mode 기본 사용법 ▣ Unreal Engine에서 Static Mesh를 사용하다 보면 간단한 Mesh 수정이 필요한 경우가 있습니다.예를 들어Cube 하나를 직접 만들고 싶다.Static Mesh의 Pivot 위치를 수정하고 싶다.여러 Mesh를 합치고 싶다.하나의 Mesh를 여러 개로 분리하고 싶다.Mesh 일부를 잘라내고 싶다.UV를 수정하고 싶다.Collision을 만들고 싶다.같은 작업입니다.이런 작업을 할 때마다 Blender, Maya, 3ds Max 같은 외부 Modeling 프로그램으로 돌아갈 수도 있지만 Unreal Engine에는 Editor 안에서 직접 Mesh를 생성하고 수정할 수 있는Modeling Mode가 있습니다.이번 글에서는 특정 Modeling Tool을 깊게 사용하기 전에 Modelin.. 2026. 9. 16.