본문 바로가기

내일배움캠프

(53)
[TIL 24.07.15] 11.MonoBehaviour와 Unity 생명주기 . 목   차 확인 문제1. Time.timeScale을 0으로 하면 Update와 FixedUpdate는 모두 호출이 되지 않을까요? 그 이유는 무엇일까요?timeScale을 0으로 설정하면 Update와 FixedUpdate 모두 호출되지 않는다.timeScale은 상대값으로, 프레임 속도이든 실제시간이든 Unity 프로그램 안의 모든 시간의 흐름에 관여한다. 2. Update의 호출주기에 영향을 주는 것은 무엇일까요?프레임 속도. 즉, 하드웨어의 성능이나 프로그램의 복잡성에 영향을 받는다.timeScale. 게임의 전체 시간의 흐름을 조절한다.3. FixedUpdate의 호출주기에 영향을 주는 것은 무엇일까요?실제 시간.timeScale. 게임의 전체 시간의 흐름을 조절한다.4. Awake와 Sta..
[TIL 24.07.12] 10.선형 자료구조 - Queue . 목   차 확인 문제1. Queue가 무엇인지 알고 있나요? 어떤 방식으로 작동하는지 설명할 수 있을까요?큐(Queue)는 데이터 구조 중 하나로, 먼저 들어온 데이터가 먼저 나가는 FIFO(First In, First Out) 방식으로 작동한다. 즉, 먼저 추가된 요소가 먼저 제거된다. Enqueue: 큐의 끝부분에 새로운 요소를 추가.Dequeue: 큐의 앞부분에서 요소를 제거 및 반환Peek: 큐의 앞부분에 있는 요소를 제거하지 않고 반환.IsEmpty: 큐가 비어있는지 확인.Count: 큐에 있는 요소의 개수를 반환. 2. Queue를 직접 구현해본 경험이 있을까요? 없다면 직접 구현해봅시다.. 설명 문제1. Queue의 특성을 설명해주세요.FIFO 구조.동적 크기 관리.2. Queue는 언제..
[TIL 24.07.11] 09. 선형 자료구조 - Stack . 목   차 확인 문제1. Stack가 무엇인지 알고 있나요? 어떤 방식으로 작동하는지 설명할 수 있을까요?Stack은 선입후출의 방식으로 작동하는 자료구조이다. 즉, 가장 마지막에 삽입된 데이터가 가장 먼저 배출된다. Stack의 기능은 주로 다음과 같다:Push: 스택의 맨 위에 새로운 데이터 추가.Pop: 스택의 맨 위의 데이터 제거 및 반환.Peek / Top: 스택의 맨 위 데이터가 무엇인지 전달.isEmpty: 스택이 비어있는지 여부를 bool값으로 전달.size: 현재 스택에 있는 데이터의 개수를 반환. 2. Stack을 직접 구현해본 경험이 있을까요? 없다면 직접 구현해봅시다.구현해본 경험이 있다. 아래는 아주아주 간단한 예이다:using System;using System.Collect..
[TIL 24.07.10] 08.선형 자료구조 - LinkedList . 목   차 확인 문제1. LinkedList가 무엇인지 알고 있나요? 어떤 방식으로 작동하는지 설명할 수 있을까요?LinkedList는 각 데이터 요소들을 노드로 구성하고 각 노드는 다음 노드를 가리키는 포인터를 가지는 자료구조이다. 각 노드는 메모리 상에서 연속적인 위치가 아닌 곳에 존재할 수 있다. 노드는 최소 2개의 필드를 갖는다. 1. 노드 자체가 담고 있을 데이터. 2. 다음 노드의 주소를 가리키는 포인터. 이때, 포인터의 값이 null이라면 기본적으로 노드의 끝이라는 의미를 갖는다.  새로운 노드를 추가하려면 우선 새 노드 객체를 만든다.만약 이 노드가 최초의 노드라면, 포인터는 반드시 null일 것이다.  이 노드가 두 번째 노드라면, 2가지 선택지가 있다. 기존 노드의 앞에 배치되느냐,..
[TIL 24.07.09] 07. C# 심화 문법 . 목   차 확인 문제using System;using System.Collections.Generic;public class Box{ public T Value { get; set; } public void DisplayValue() { Console.WriteLine($"Value: {Value}"); }}class Program{ static void Main(string[] args) { Box intBox = new Box { Value = 123 }; Box strBox = new Box { Value = "Hello, World" }; Box dateBox = new Box { Value = DateTime...
[TIL 24.07.08] 06. Garbage Collector .목   차 확인 문제using System;public class Logger{ public string LogMessages { get; private set; } public Logger() { LogMessages = string.Empty; } public void Log(string message) { LogMessages += message + "\n"; }}public class Program{ public static void Main() { Logger logger = new Logger(); for (int i = 0; i  1. 위의 코드가 문제가 되는 이유를 메모리 관점..
[TIL 24.07.05] 05. 상속과 인터페이스 . 목   차 확인 문제using System;// 상위 클래스 Apublic class A{ public virtual void Display() { Console.WriteLine("Class A Display"); }}// 클래스 B는 클래스 A를 상속받음public class B : A{ public override void Display() { Console.WriteLine("Class B Display"); }}// 클래스 C는 클래스 A를 상속받음public class C : A{ public override void Display() { Console.WriteLine("Class C Display"); ..
[TIL 24.07.03] 03. 콜백, delegate, event . 목   차 확인 문제using System;class Program{ // 델리게이트 정의 public delegate int MyCallback(int a, int b); // 덧셈 메서드 static int Add(int a, int b) { return a + b; } // 곱셈 메서드 static int Multiply(int a, int b) { return a * b; } static void Main(string[] args) { MyCallback MathOperation; MathOperation = Add; Console.Writ..
[TIL 24.07.02] 02. 객체지향 프로그래밍 글의 요약 설명 부분. 목   차 확인 문제using System;// 사각형 클래스public class Rectangle{ public double Width { get; set; } public double Height { get; set; } public double CalculateArea() { return Width * Height; }}// 원 클래스public class Circle{ public double Radius { get; set; } public double CalculateArea() { return Math.PI * Radius * Radius; }}// 면적 계산기 클래스public class Ar..
[TIL 24.07.01] 01. 객체와 한정자 . 목   차 확인 문제using System;public class Car{ // Properties public string Make { get; set; } public string Model { get; set; } public int Year { get; set; } // Methods public void DisplayInfo() { Console.WriteLine($"Car Make: {Make}, Model: {Model}, Year: {Year}"); }}class Program{ static void Main(string[] args) { Car car1 = new Car(); car1.Make ..
[TIL 24.06.19] Unity에서 TMP 글씨 곡선으로 그려주기 .목   차 Tmp_Text 곡선 만들기  미리 받아온 에셋의 배너가 곡선 모양이라 제목이 일자면 안맞을 것이라는 생각이 들었다. 그래서 제목에 곡률을 주고 싶어졌다. 하지만 글자 하나하나 직접 기울여가며 그리기에는 품격이 없고 (=귀찮고) 나중에 제목 위치를 바꾸거나 크기를 바꿀 때마다 엄청난 불편함을 겪을 것이다. 따라서 스크립트를 통해 글씨를 구부려주기로 했다.  우선, Animation Curve를 통해 내가 원하는 곡선의 모양을 그려주었다. Inspector창으로는 내가 원하는 tangent값을 숫자로 입력하는 법을 찾지 못해서 결국 스크립트로 작성했다.우선, 시작점 / 꼭짓점 /  끝점의 KeyFrame 변수를 각각 선언 및 인스턴스 할당해주었다.  Keyframe key1 = new Keyf..
[TIL 24.06.18] Unity로 Swipe 입력받기 . 목   차 Swipe 입력받기처음에는 하나의 액션만으로 Start와 Perform, Cancel을 이용해 시작점과 끝점을 받아온 후 그 차이를 통해 Swipe를 구현하려 했으나, GPT를 통해 찾은 방법으로는 도저히 Cancel 지점, 즉 사용자가 마우스클릭을 떼는 순간을 입력받아오지 못해서 Hold와 Vector2-MousePos를 통해 연계하여 Hold의 Start와 Cancel 이벤트 발생시 그 때의 Mouse Pos값을 받아왔다. 그 후, 두 지점 사이의 거리가 MinSwipeDistance보다 커야만 우선적으로 Swipe임을 감지하고, 한번이라도 4방 중 하나의 거리가 MinSwipeDistance보다 커진 적이 있다면 Swipe 타입은 우선 그 타입으로 락온시켰다. 이 MinSwipeDis..
[TIL 24.06.17] PlayerPrefs 암호화 .목   차 Hashkey사실 처음에는 딱히 보안을 추구할 생각이 없었다. 그냥 신나게 맵 만들고 대강대강 클리커 흉내만 내고 싶었을 뿐이다. 하지만, 혹시 PlayerPrefs가 저장할 때 String값을 키값으로 하는데 애니메이션처럼 이걸 hash로 바꾸면 비용이 줄어드나 라는 의문점에서 hash로 저장하기를 시작했다.  Hash로 막상 변환을 끝내고 조금 검색해보니 사실 내가 의미없는 짓을 했다는걸 그제야 깨달았다. 어차피 키값이고 Dictionary라 이 방식은 딱히 더 효율적이지는 않다는 것이다.  하지만 만든게 아깝기 때문에 보안때문에 이렇게 만든 척 하기로 했다. 현재의 코드에 조금 더해서 약간의 보안이 가미된 저장법을 만들었다. SHA-256 해시 알고리즘SHA-256의 특징: 고정된 길이..
[TIL 24.06.13] Cinemachine . 목   차 CinemachineUnity의 카메라 동작을 더 쉽게 할 수 있도록 도와주는 패키지.카메라 종류자세한 내용은 적지 않았고, 나중에 쉽게 자세한 내용을 찾아볼 수 있도록 목차를 만든다는 느낌으로 정리해두었다.#Virtual Camera 실제 카메라가 없는 상태에서도 속성을 정할 수 있도록 도와준다.가상 카메라는 Unity 카메라와 별개의 게임 오브젝트이며, 독립적으로 동작한다.소제목 설명#Blend List Camera여러 카메라들을 섞어 사용할 수 있게 해주는 카메라.소제목 설명#State-Driven Camera애니메이션 상태에 따라 캐릭터 움직이 변하는 것처럼, 상태에 따라 변하는 카메라.소제목 설명#ClearShot Camera건물 안 등으로 들어갔을 때 벽 너머가 보이지 않고 깔끔..
[TIL 24.06.12] Character Controller .목   차 Character Controller강의 내용에서 추가로 유니티 공식문서를 참고해 공부한 내용이다.Slope Limit공식문서 설명:영문Limits the collider to only climb slopes that are less steep (in degrees) than the indicated value.한글콜라이더가 명시된 값보다 작은 경사(단위:도)의 슬로프만 오르도록 제한합니다. Step Offset공식문서 설명:영문The character will step up a stair only if it is closer to the ground than the indicated value. This should not be greater than the Character Control..
[TIL 24.06.05] Raycast Trouble Shooting .목   차  RayCastHit을 받는데 카메라에서 쏘는 레이가 3인칭인 캐릭터에 가려져서 중간에끊기는 문제가 발생했다. RaycastHit을 연속적으로 받는 것으로 해결했다. RaycastHit[] hits = Physics.RaycastAll(ray, maxCheckDistance, layerMask);bool interactableFound = false;foreach (RaycastHit hit in hits){ //Player 레이어 무시. if (((1
[TIL 24.06.03] 스크롤 바 목   차 ScrollRectUI >Scrollbar을 통해 스크롤 필드를 가져올 수 있다. 이때 Scrollbar의 ScrollRect 컴포넌트의 속성은 다음과 같다. 스크롤 리스트를 만들기 위해 추가로 사용할 법한 컴포넌트#Vertical Layout GroupPadding:Top, Bottom, Left, Right: 레이아웃 그룹의 가장자리에 추가할 패딩(여백)을 설정합니다. 패딩은 자식 요소들과 레이아웃 그룹의 경계 사이의 간격을 정의합니다.Child Alignment:자식 요소들의 정렬 위치를 설정합니다. (Top Left, Top Center, Top Right, Middle Left, Middle Center, Middle Right, Bottom Left, Bottom Center, Bo..
[TIL 24.05.31] LOD, Occlusion Culling, ClippingPlane . 목   차 LOD LOD의 주요 개념모델의 디테일 수준: 동일한 객체에 대해 여러 개의 디테일 수준을 준비합니다. 예를 들어, 가까이서 볼 때는 고해상도 모델을 사용하고, 멀리서 볼 때는 저해상도 모델을 사용합니다.전환 거리: 객체의 디테일 수준을 변경하는 기준 거리를 설정합니다. 이 거리를 기준으로 카메라와 객체 사이의 거리에 따라 적절한 디테일 수준의 모델이 선택됩니다.유니티에서 LOD 활용법LOD 모델 준비모델링 툴(Blender, Maya 등)을 사용하여 다양한 디테일 수준의 모델을 준비합니다. 예를 들어, 고해상도 모델(LOD0), 중간 해상도 모델(LOD1), 저해상도 모델(LOD2)을 만듭니다.2. LOD 그룹 생성유니티 에디터에서 LOD를 적용할 객체를 선택합니다.객체에 LOD Grou..
[TIL 24.05.30] NavMesh . 목   차 Unity에서 NavMesh에 대해 알아보자 Unity의 NavMesh는 경로 탐색과 AI 이동을 처리하는 데 사용되는 강력한 도구입니다. NavMesh는 게임 환경에서 캐릭터가 장애물을 피하고 목적지로 이동할 수 있는 경로를 자동으로 생성하고 관리합니다. NavMesh의 주요 개념 NavMesh: NavMesh는 게임 환경에서 탐색 가능한 영역을 나타내는 데이터 구조입니다. 이는 정적(static)인 환경에서 자동으로 생성됩니다. NavMesh Agent: NavMesh Agent는 NavMesh 위를 이동하는 AI 캐릭터를 나타내는 컴포넌트입니다. 이 컴포넌트를 사용하면 캐릭터가 NavMesh를 따라 이동할 수 있습니다. NavMesh Obstacle: NavMesh Obstacle은 ..
[TIL 24.05.29] 레이캐스트 글의 요약 설명 부분. 목   차 Unity에서 Raycast에 대해 알아보자Raycast는 Unity에서 매우 중요한 기능 중 하나로, 주로 물리 엔진과 상호 작용할 때 사용됩니다. Raycast를 이용하면 가상의 광선을 쏘아 물체와의 충돌 여부를 감지할 수 있습니다. 이는 주로 캐릭터의 시야, 총알의 경로, 충돌 검사 등 다양한 게임 메커니즘에 활용됩니다.Raycast의 주요 개념과 사용법Ray: Ray는 시작점(origin)과 방향(direction)으로 정의됩니다. 이는 3D 공간에서 무한히 뻗어나가는 직선을 의미합니다. RaycastHit: RaycastHit는 Ray가 충돌한 객체에 대한 정보를 담고 있습니다. 충돌한 객체의 위치, 법선 벡터, Collider 등을 포함합니다.Physics.R..