목록전체 글 (10)
Moon_B 게임개발 공부 업적
🟢 참조 (Reference)“그냥 원본에 또 다른 이름 하나 붙여준 것”원본 데이터의 별명이에요.참조 자체가 별도의 메모리 공간을 차지하지 않아요.그래서 주소도 원본과 완전히 같아요.사용하기 간단하고 안정적이죠.int a = 10; int& r = a; // r은 a의 또 다른 이름 r = 20; // a도 20이 됨🔵 포인터 (Pointer)“주소를 저장하는 변수. 원본을 간접적으로 다룸”원본 데이터의 주소를 값으로 저장하고 있어요.포인터 자체는 메모리 상에서 별도의 공간을 차지합니다.원본을 다룰 때는 *p처럼 역참조해야 합니다.더 유연하지만, 실수할 여지도 많아요 (ex. null pointer, dangling pointer 등)int a = 10; int\* p = &a; // ..
[StructLayout] Attribute구조체나 클래스의 필드가 메모리에 어떻게 정렬될지(배치될지) 지정합니다.매개변수설명LayoutKind필드의 메모리 배치 방식을 지정합니다. (Sequential, Explicit, Auto)Pack필드 사이의 정렬 바이트를 지정합니다. 1이면 패딩 없이 딱 붙어 저장됩니다. (기본값은 8)Sequential정의된 순서대로 필드를 메모리에 배치합니다.C/C++의 구조체와 호환이 좋습니다.일반적으로 가장 많이 사용되는 옵션입니다.[StructLayout(LayoutKind.Sequential)]struct MyStruct { public int A; public byte B; public short C;}2, Explicit각 필드에 [FieldOffset]을..
InvokeRepeating개요InvokeRepeating은 특정 메서드를 일정한 간격으로 반복 실행하는 Unity 함수입니다.주요 특징메서드 자동 호출: 일정 시간 후 실행 후, 지정된 간격으로 반복 실행됨매개변수:methodName: 실행할 메서드 이름time: 처음 실행까지 걸리는 시간repeatRate: 이후 반복 실행 간격사용 예시void Start(){ InvokeRepeating("DealDamage", 0, 2);}void DealDamage(){ for(int i = 0; i 한 줄 요약InvokeRepeating을 사용하면 일정 시간 간격으로 특정 메서드를 반복 실행할 수 있습니다.유니티 조명 시스템 (Lighting)개요유니티의 조명 시스템은 게임 내 빛과 그림자를 관리하여..
1. 개요AnimationCurve는 Unity에서 키프레임을 사용하여 특정 값의 변화를 부드럽게 조절할 수 있도록 도와주는 클래스입니다. 주로 애니메이션, UI 인터랙션, 움직임 보정 등에 활용됩니다. 예시캐릭터의 이동 경로 보정UI 애니메이션 (버튼 클릭 시 커브를 이용한 확대 효과 등)자연스러운 카메라 움직임적 AI의 속도 조절피드백 효과 (진동, 스케일 변화 등)2. AnimationCurve의 구성 요소2.1 키프레임 (Keyframe)Keyframe은 시간과 값의 변화를 정의하는 개별적인 포인트입니다.Keyframe(float time, float value) 형태로 생성됩니다.각 키프레임에는 inTangent, outTangent을 조정하여 보간 방식(Interpolation Mode)을 설..
Unity 추가 개념 정리1. TryGetComponent1.1 개념TryGetComponent는 Unity에서 게임 오브젝트의 특정 컴포넌트를 안전하게 가져오는 메서드입니다. 이 메서드를 사용하면 컴포넌트가 존재하는지 확인한 후, 있다면 가져올 수 있습니다.1.2 사용법public bool TryGetComponent(out T component) where T : Component;T: 가져올 컴포넌트 타입 (MonoBehaviour를 상속한 컴포넌트 사용 가능)component: out 매개변수를 사용하여 컴포넌트 저장Rigidbody rb;if (TryGetComponent(out rb)){ rb.AddForce(Vector3.up * 100f);}else{ Debug.Log("Rigi..
Unity 개발에서 핵심적으로 사용되는 스카이박스, Rigidbody ForceMode, Raycast, Input System 등에 대한 기술적인 내용을 정리해 보았습니다.1. 스카이박스(Skybox)1.1 개념스카이박스(Skybox)는 게임 세계의 배경을 표현하는 환경 매핑 기술입니다. 주로 하늘, 구름, 산 등의 자연 배경을 표현하는 데 사용됩니다.1.2 종류큐브 맵(Cube Map): 6개의 텍스처로 구성된 정육면체 배경구체형 스카이박스(Sphere Map): 단일 텍스처를 구체 형태로 매핑하여 표현Procedural Skybox: Unity의 기본적인 하늘 표현 방식으로, 동적인 날씨와 시간 변화 적용 가능1.3 Unity 적용 방법RenderSettings.skybox = mySkyboxMat..
오브젝트 풀링이란?게임 개발에 널리 사용되는 테크닉으로, 게임의 성능을 개선하기 위해 사용됩니다.오브젝트 풀링은 객체를 미리 생성해 두고 필요할 떄 가져다 사용하고, 사용이 끝나면 다시 풀에 반납하는 방식을 의미합니다.생성(Instantiate)과 소멸(Destroy) 비용이 큰 작업을 최소화함으로 써 성능을 향상시키는데 중요한 역할을 합니다.자주 생성과 파괴되는 객체(총알, 입자, 몬스터)를 주로 오브젝트 풀링 방식으로 재사용함으로써 메모리 할당과 가비지 컬렉션에 따른 성능 저하를 방지할 수 있습니다.주의) 적절히 사용하면 큰 성능 개선을 가져올 수 있지만, 불필요한 메모리 사용을 증가시킬 수 있으므로 사용 시에는 신중해야 합니다. 오브젝트 풀의 크기를 적절히 조절하는 것이 중요합니다.AnimatorA..
프리팹프리팹은 Unity 게임 엔진에서 사용되는 게임 오브젝트를 재사용 가능하고 관리하기 쉽게 만들기 위한 템플릿, 프리셋입니다.프리팹은 레벨 디자인, 재사용 가능한 게임 요소(캐릭터, 아이템, 장애물 등)의 생성, 프로토타이핑(개발 초기 단계에 시스템의 모형을 제작하고 검증하는 과정) 등에 주로 사용됩니다.프리팹은 게임 오브젝트를 파일형태로 만들어 일관성을 유지하고 일괄적인 업데이트를 쉽게 할 수 있습니다.Intantiate 함수Unity에서 제공하는 메소드로, 주어진 원본 개체의 복사본을 새로 생성하고 이를 반환합니다.Instantiate 함수는 특정 프리팹(Prefab)이나 오브젝트를 복제할 때 사용됩니다. 아래는 플레이어가 총알을 발사하는 간단한 예제입니다.예제using UnityEngine;pu..