목록전체 글 (9)
Moon_B 게임개발 공부 업적
[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..

게임 개발자라면 필수로 알아하는 회전과 각도에 대해 공부해 보았습니다.쿼터니언(Quaternion)이란유니티 인스팩터 창에서 나오는 회전은 Vector3로 표현되고, 이런 방식을 오일러각(EulerAngle)이라고 합니다. 하지만 대부분 3D 소프트웨어는 내부적으로 쿼터니언을 사용합니다. ex) 유니티, 블랜더, 3DMax 같은거..오일러 공식으로 여러회전을 하면서 회전의 각도가 겹쳐서 한 축으로의 회전을 읽어버리는 짐벌 락(Gimbal Lock) 현상이 발생할 수 있습니다. 짐벌락 설명 유튜브 링크 : (https://youtu.be/yxMQKsab5TQ?feature=shared) 그래서 쿼터니언을 사용하면 짐벌 락(Gimbal Lock)문제를 피할 수 있습니다. 수학적으로 4차원 복소수를 이용한 회..