728x90
반응형

전체 글 82

클래스(class)와 구조체(struct)의 차이점

항목classstruct타입 종류참조 타입값 타입메모리 저장 위치힙, 스택에 참조만 저장스택 또는 인라인 저장할당/복사참조 전달(주소 공유)값 복사(독립 복사본 생성)기본 생성자사용자 정의 가능파라미터 없는 생성자 정의 불가(컴파일러 자동 생성)상속 가능여부O(다형성 지원)X(인터페이스는 구현 가능)용도복잡한 객체, 상태 변경이 잦은 객체작고 불변에 가까운 데이터 구조Unity 예시GameObject, MonoBehaviourVector2, Vector3, Color, RaycastHit class는 힙, struct는 스택에 저장되므로, 값 타입인 sturct를 잘 활용하면 GC(가비지 컬렉션) 발생을 줄이고, 성능을 향상시킬 수 있다.특히 Unity에서는 Update()에서 반복 호출되는 코드에서의 ..

값 타입(Value Type)과 참조 타입(Reference Type) 차이

값 타입(Value Type)이란?변수 자체에 데이터가 저장되, 주로 스택(stack)에 저장된다.변수 간 대입 시 값이 복사(copy)되어 전달되므로 서로 독립적인 값을 유지한다.대표적으로 int, float, bool, struct등이 있다. 참조 타입(Reference Type)이란?힙(heap) 메모리에 데이터를 저장하고, 변수에는 해당 객체의 참조(주소)가 저장된다.변수 간 대입 시 주소가 복사되기 대문에, 하나를 수정하면 다른 쪽도 영향을 받는다.대표적으로 class, string, object, array등이 있다. 함수 인자 전달 시값 타입(Value Type)은 복사되어 전달된다.참조 타입(Reference Type)은 참조(주소)가 전달되어 함수 내부에서 변경 시 원본에 영향을 미친다...

Unity MonoBehaviour 클래스의 Awake, Start, Update 메서드의 개념

Unity에서 MonoBehaviour 클래스의 생명주기 함수는 객체의 초기화 및 실행흐름을 관리하는 중요한 메서들이다. Awake() : 오브젝트가 씬에서 인스턴스화 될 때 가장 먼저 호출되며, 비활성 상태여도 호출됨. 의존성 주입, 컴포넌트 참조 등 객체 간 연결을 초기화하는 데 주로 사용.Start() : Awake가 모두 호출된 이후, 오브젝트가 활성화된 상태일 경우 첫 프레임 전에 단 한 번 호출됨. 씬에 로딩된 상태에서 게임 플레이가 시작될 때 필요한 초기화 로직에 적합.Update() : 게임이 실행되는 동안 매 프레임 호출되며, 키 입력 처리, 위치 갱신, 상태 확인 등 지속적인 업데이트가 필요한 로직을 구현할 때 사용됨.

Unity 학습 2025.07.15

유니티 public vs SerializeField 차이점 정리

둘 다 에디터의 인스펙터에 보이기 때문에 비슷한 듯 다른 두 가지에 대한 차이점을 정리하려고 한다. public이란?public은 클래스 외부에서도 접근 가능한 멤버를 정의할 때 사용하는 접근 제한자public int health = 100;인스펙터(Inspector)에서 값이 노출됨외부 클래스에서도 object.health처럼 직접 접근 가능매우 직관적이지만, 캡슐화(정보 은닉)가 깨질 수 있음 SerializeField는 무엇인가?SerializeField는 private 변수임에도 인스펙터에서 보여지도록 해주는 Unity의 속성(Attribute)[SerializeField]private int speed = 5;인스펙터에서는 public처럼 값이 보이고 수정 가능외부 스크립트에서는 접근 불가능 (..

Unity 학습 2025.06.20

유니티3D 문 열고/닫기 상호작용 만들기

간단한 코드 예시와 함께 문 열고 닫는 상호작용을 만들어보려고 한다. 1. 인터페이스 정의상호작용 대상에 붙일 인터페이스를 정의한다.public interface IInteractable{ void Interact(); string GetInteractText(); // UI 힌트용} 2. Layer 지정Door 오브젝트의 Layer를 지정해준다.알맞은 Layer가 없다면 Add Layer 클릭 후 추가한다.Door는 Collider 컴포넌트가 있어야 한다. 3. 상호작용 Text 추가Hierarchy >> UI >> Text - TextMeshPro 추가Canvas와 함께 Text가 자동생성된다.Canvas 상에서 원하는 위치, 앵커, 글씨체 같은 것들을 수정한다. 4. Interactio..

Unity 학습 2025.06.19

Unity 오브젝트 풀링(Object Pooling)과 프리팹(Prefab)의 개념정리

Prefab이란?Prefab은 Unity에서 게임 오브젝트를 에디터 상에서 미리 저장해 둔 템플릿(청사진)이다.자주 사용하는 오브젝트를 사전 구성해 저장해 두고, 코드에서 Instantiate()를 통해 복제하여 사용한다. 특징에디터에서 만든 오브젝트의 구조/컴포넌트를 유지인스턴스를 여러 번 생성해도 유지보수 용이예: 플레이어, UI 패널, 버튼, 적 캐릭터 등등Object Pooling이란?Object Pooling(오브젝트 풀링)은 게임에서 자주 생성되고 파괴되는 오브젝트를 미리 생성한 뒤, 필요할 때 꺼내 사용하고 다시 재활용하는 기법이다. 왜 필요한가?Instantiate()와 Destroy는 메모리 할당과 해제를 반복해 GC(가비지 컬렉션)을 유발특히 총알, 이펙트, 몬스터 등 짧은 시간에 많이..

Unity 학습 2025.06.19

Unity ScriptableObject의 개념과 MonoBehaviour와의 차이점

ScriptableObject란?Unity에서 제공하는 비-컴포넌트 기반의 경량 클래스로, 게임 오브젝트에 부착하지 않고도 데이터를 저장하고 공유할 수 있는 자산 형태의 객체 특징 항목내용컴포넌트가 아님GameObject에 부착되지 않는다생명주기 없음Start(), Update() 같은 생명주기 메서드가 없다메모리 효율중복 인스턴스 없이 다수의 오브젝트가 공유 가능하다에디터 연동ScriptableObject를 에디터에서 .asset 형태로 저장 가능하다복잡도 낮음씬에 존재하지 않아도 되므로 관리가 단순하다 주요 사용 사례분야예시게임 데이터무기/캐릭터/스킬/아이템 정보 정의설정값 관리난이도, 튜토리얼 진행 정보, 전역 설정공유 데이터런타임에 여러 오브젝트가 참조하는 공통 상태상태 정의FSM 상태 정의,..

Unity 학습 2025.06.16

유니티 Starter Assets 무료 에셋을 이용한 3인칭 카메라 추적 만들기

지난 3D 캐릭터 움직임 구현에 이은 3인칭 카메라 추적을 만들어보려고 한다캐릭터에는 CameraRoot라고 하는 오브젝트가 붙어있는데 이것을 활용하거나 없으면 만들어 주어야한다. 만약 CameraRoot가 없다면 오브젝트를 만들고 알맞은 Transform을 설정해주도록 하자 MainCamera 오브젝트에 CinemachineBrain 컴포넌트를 추가해준다 씬이 존재하는 Hierarchy창에서 Cinemachine > Virtual Camera 추가 Virtual Camera Inspector에서 Body는 3인칭을 설정하고 PlayerCameraRoot를 Follow로 추가해주어야 한다 캐릭터를 따라다니는 가상 카메라가 추가되었다

Unity 학습 2025.06.10

유니티 무료 에셋을 활용한 3D 캐릭터와 움직임 구현

유니티 무료 에셋을 활용해 간단함 움직임과 애니메이션을 구현하고자 한다. 준비물1.Synty Studio POLYGON 스타터팩 Starter Pack - Synty POLYGON - Stylized Low Poly 3D Art | 자습서 | Unity Asset StoreGet the Starter Pack - Synty POLYGON - Stylized Low Poly 3D Art package from Synty Studios and speed up your game development process. Find this & other 자습서 options on the Unity Asset Store.assetstore.unity.com2.Unity Starter Assets - ThirdPerso..

Unity 학습 2025.06.09

간단한 3D 캐릭터 이동과 점프

3D 오브젝트를 이용해 캐릭터 이동과 점프를 구현해보고자 한다. WASD >> 상하좌우 수평이동Space바 >> 수직 점프 1. 3D 캐릭터 또는 오브젝트를 생성한다 2. Rigidbody와 Collider 컴포넌트를 추가한다 3. PlayerController 스크립트를 추가한다 using UnityEngine;public class PlayerController : MonoBehaviour{ public float moveSpeed = 5f; //이동 속도 public float jumpForce = 5f; //점프 강도 Rigidbody rb; bool isGrounded; //바닥에 닿아 있는지 여부 // Start is called once before the..

Unity 학습 2025.06.08
728x90
반응형