전체 글 88

[TIL] C# 람다식

1. 람다식이란?익명 함수를 간결하게 표현하는 C# 구문으로 "=>" 연산자가 매개변수 목록과 본채를 구분하며 만들어진 람다식은 delegate 형식 인스턴스로 암묵 변환된다. 2. 기본 문법// 식(식 본체) 람다(int x, int y) => x + y;// 문장 본체 람다 (string name) =>{ Console.WriteLine($"Hello, {name}");};식 람다는 결과를 바로 반환하며 리턴형은 식의 타입으로 추론된다.문장 람다는 중괄호 안에서 여러 문장을 실행하고 필요하면 return을 명시한다. 3. async/await 람다Func load = async () =>{ var data = await api.GetAsync(); Process(data);};asyn..

C# 2025.05.22

[TIL] C# Struct와 Class

1. Struct(구조체)값 형식의 사용자 정의 타입으로 작고 간단한 데이터를 표현할 때 사용되며 객체를 생성하면 스택에 저장된다.다른 Struct난 Class로부터 상속을 받을 수 없지만 interface는 구현할 수 있다.사용자 정의 생성자를 만들 수 있지만 매개변수가 없는 생성자는 직접 정의할 수 없다. - 언제 쓰일까? 작은 데이터 덩어리일 때 사용된다.불변 객체로 사용할 때 사용된다.참조보다 값 자체를 복사하고 싶을 때 사용된다.짧게 쓰고 버릴 데이터에 적합하다.- 사용 예시public struct Point{ public int X; public int Y; public Point(int x, int y) { X = x; Y = y; }}Po..

C# 2025.05.21

[TIL] Unity 최종프로젝트 네브매쉬 트러블 슈팅

2025.04.24 - [Unity] - [TIL] Unity 최종프로젝트 몬스터 트러블 슈팅 [TIL] Unity 최종프로젝트 몬스터 트러블 슈팅2025.04.22 - [Unity] - [TIL] Unity 최종프로젝트 몬스터 애니메이션 트러블 슈팅 [TIL] Unity 최종프로젝트 몬스터 애니메이션 트러블 슈팅2025.04.21 - [Unity] - [TIL] Unity 최종프로젝트 몬스터 애니메이션(Animatunihee1.tistory.com 1. 발단우리가 만드는 게임의 지형은 플레이어가 움직이는 방향으로 동적 생성된다.이때 새로 생성된 지형에도 네브매쉬가 동적으로 생성될 수 있도록 일정시간마다 네브매쉬를 재생성 한다.여기서 문제가 생겼다. 처음 게임을 실행했을 때는 문제가 없었지만 일정 시간 ..

Unity 2025.05.20

[TIL] Unity 렌더링 파이프라인(Built-in, URP, HDRP)

1. Built-in Render Pipeline(기본 렌더 파이프라인)Unity에서 오래전부터 사용되던 전통적인 렌더링 방식으로 내부 구조가 고정되어 있고 커스터마이징이 제한적이다.대부분의 Unity 튜토리얼과 에셋은 Built-in 렌더 파이프라인을 기반으로 한다. 장점- 설정이 간단하고 빠르게 결과를 확인할 수 있다.- 많은 레거시 에셋과 호환이 가능하다.- 초보자나 작은 프로젝트에 적합하다. 단점- 멀티플랫폼 최적화가 어렵다.- 고급 그래픽 효과 구현이 어렵다.- 셰이더 커스터마이징 과정이 복잡하다 사용 예시간단한 데모 프로토타입 학습용 프로젝트 2. URP(Universal Render Pipeline)경량 파이프라인으로 모바일부터 PC까지 다양한 플랫폼에 대응할 수 있으며 Scriptabl..

Unity 2025.05.19

[TIL] 네트워크 프로토콜 IP, TCP, UDP

1. IP컴퓨터 간 데이터가 어디에서 어디로 가야 하는지 알려주는 주소 체계를 제공하고 데이터를 목적지까지 전달한다.패킷이라는 단위로 데이터를 나눠서 전송하며 각 패킷에는 출발지 IP, 목적지IP, 순번 등이 포함된다. 버전- IPv4: 32비트 주소로 현재 가장 널리 사용되고 있다.- IPv6: 128비트 주소로 IPv4 주소 부족 문제를 해결한다. 한계점- 패킷들의 도착 순서가 바뀔 수 있다.- 패킷이 유실되어도 재전송하지 않는다.- 데이터 손상 여부만 확인하고 수정은 하지 않는다. 사용 예시웹사이트에 접속하면 브라우저는 서버의 Ip주소를 알아낸 후 해당 서버에 IP 패킷을 보낸다. 2. TCPIP위에서 작동하며 데이터를 안전하게 순서대로 빠짐없이 전송하는 프로토콜이다. 주요 특징- 연결 지향(Con..

Unity 2025.05.16

[TIL] Unity 월드 스페이스와 로컬 스페이스

1. 개요월드 스페이스와 로컬 스페이스는 Unity에서 오브젝트의 위치, 회전, 스케일을 해석할 때 기준이 되는 좌표계를 의미한다.이동, 회전, 부노-자식 관계가 있는 경우에 자주 쓰인다. 2. 월드 스페이스(World Space)전역(Global) 좌표계를 기준으로 씬 전체의 0,0,0을 기준으로 위치, 방향, 스케일을 판단한다.예시(0, 0, 1) 방향으로 이동하면 항상 북쪽(Z) 방향으로 이동한다.부모의 회전에 영향을 받지 않는다. 주요 메서드transform.position: 월드스페이스 위치transform.rotation : 월드 기준 회전transform.Translate(Vector3 dir, Space.World) : 월드 공간 기준 이동transform.InverseTransformDi..

Unity 2025.05.15

[TIL] C# 배열과 리스트

1. 개요C#에서의 배열과 리스트는 모두 메모리상에 연속적으로 저장되는 구조이다.보통 우리는 리스트의 메모리가 비연속적이라고 알고있었지만 C#에서 리스트는 내부적으로 동적 배열 구조를 가지고 있기 때문에 연속적으로 저장된다.그렇다면 C#에서의 배열과 리스트에 대해 정리해보겠다. 2. 배열고정 크기의 연속된 데이터 저장소를 가지고 있다.배열은 단순한 자료구조로 기본적인 인덱싱과 Length만 제공하고 있다.접근 속도가 빠르고 메모리 사용이 적다.// 크기가 고정int[] arr = new int[3]; arr[0] = 10;// 인덱싱과 Length 기능 제공int[] arr = {1, 2, 3};int len = arr.Length; 3. 리스트크기 조절이 가능한 제네릭 컬렉션이다.Add, Remove..

C# 2025.05.14

[TIL] Unity 최종프로젝트 동물 구현하기(전략 패턴)_6

2025.05.01 - [Unity] - [TIL] Unity 최종프로젝트 몬스터 구현하기(오브젝트풀)_5 [TIL] Unity 최종프로젝트 몬스터 구현하기(오브젝트풀)_52025.04.11 - [Unity] - [TIL] Unity 최종프로젝트 몬스터 AI 구현하기(오브젝트풀)_ 4일차 [TIL] Unity 최종프로젝트 몬스터 AI 구현하기(오브젝트풀)_ 4일차2025.04.10 - [Unity] - [TIL] Unity 최종프로젝트 몬스터 AIunihee1.tistory.com 1. 개요오늘은 만들어둔 몬스터의 상태패턴을 참고하여 동물의 상태패턴을 구현해보았다.구현하는 도중 동물의 타입에 따라 chase 상태가 다르게 수행되게 구현해야 했다.friendly 타입: 플레이어에게 다가간 후 멈춤aggre..

Unity 2025.05.13

[TIL] C# 가비지 컬렉터(Garbage Collector)

1. 가비지 컬렉터란?C#, Java 같은 언어에서 더 이상 사용되지 않는 메모리를 자동으로 정리해 주는 기능이다.프로그래머가 new로 객체를 만들면 메모리에 저장되는데 그 객체를 더 이상 쓰지 않으면 직접 지우지 않아도 알아서 정리해주는 기능이다. 2. C#에서의 가비지 컬렉터 동작 방식1) 참조가 끊기 객체 찾기어떤 객체에 더 이상 참조가 없으면 가비지 컬렉터가 스스로 안 쓰는 객체로 판단한다. 2) 메모리 회수참조가 끊긴 객체를 메모리에서 제거하여 힙 공간을 확보한다. 3) 필요할 때 자동 실행명시적으로 호출하지 않아도 자동으로 실행된다.※ GC.Collect()로 수동 호출 가능하지만 성능에 안 좋은 영향을 줄 수 있어 주의해야 함 3. 가비지 컬렉터 세대가비지 컬렉터는 성능 최적화를 위해 객체를..

C# 2025.05.12

[TIL] Unity 쿼터니언(Quaterion)

1. 쿼터니언이란?4차원 복소수를 기반으로 한 수학적 구조이다.Unity에서는 Quaternion 구조체로 제공되며 내부적으로는 (x, y, z, w)의 네개 값으로 구성된다.회전을 표현할 수 잇는 방식 중 하나로 3D 회전에 적합하다. 2. 쿼터니언을 사용하는 이유- 짐벌락 방지오일러 각을 사용할 경우 특정 각도에서 회전 축이 겹쳐서 자유도를 잃는 문제가 발생하는데 쿼터니언을 통해 방지할 수 있다.※짐벌락이란축 회전 중 두 축이 겹쳐버려서 회전이 꼬여 결국 어떤 방향으로도 회전할 수 없게 되거나 엉뚱한 축으로 회전하는 현상 - 부드러운 회전쿼터니언은 두 회전 간을 부드럽게 보간할 수 있어서 자연스러운 회전 애니메이션을 만들 수 있다. - 계산 효율회전 행렬보다 메모리 사용량이 적고 복잡한 회전 연산도 ..

Unity 2025.05.09