본문 바로가기

게임 개발 일지/내일배움캠프 TIL89

[Unity] 게임 진행에 따라 round 표시하기 최종 프로젝트 개발 일지 #3 GameScene에서 게임 진행을 위해 Timer 로직과 함께 필요한 UI가 있다. 바로 round이다. 이번 프로젝트의 게임은 3판2선승 제를 취하고 있기 때문에, 플레이어의 점수에 따라 라운드를 잘 표시해줄 필요가 있었다. 내가 생각한 로직은 round 옆의 숫자를 조절할 수 있는 메서드를 따로 만들고 이를 제어하는 컴포넌트로 timer를 선택해 GameScene_UI 내에서 timer와 round가 처리될 수 있도록 구현하는 것이다. // RoundLogic.cs public void RoundIndex() { int scoreRed; int scoreBlue; int.TryParse(TeamRedScore.text, out scoreRed); int.TryParse(.. 2024. 1. 31.
[Unity] 2가지 타이머 적용하기(코루틴) 최종 프로젝트 개발 일지 #2 GameScene에서 위 그림처럼 [ Round (숫자) : (초) s ] 형식의 UI를 좌측 상단에 띄웠다. 우리 게임의 GameScene 흐름은 다음과 같다. Start => 1라운드 파밍페이즈 - 1라운드 배틀 페이즈 if 누군가의 점수가 1이라면 => 2라운드 파밍페이즈 - 2라운드 배틀 페이즈 if 누군가의 점수가 2라면 => Game Over else if 1대1이라면 => 3라운드 파밍페이즈 - 3라운드 배틀 페이즈 => Game Over 점수에 따라서 라운드가 다음으로 진행되고, 파밍페이즈와 배틀 페이즈의 타이머가 따로 분리되어 있는 형태이다. // RoundTimer.cs IEnumerator FarmingTimer() { //yield return new .. 2024. 1. 30.
[C#] 인터페이스와 추상클래스 / 스택과 큐의 차이 기술면접 대비하기 #5 제네릭과 object의 차이 object는 타입이고, 제네릭은 타입을 사용하기 위한 도구이다. 오브젝트는 모든 자료형의 최상위 클래스이기 때문에 특정 타입을 지정하지 않고도 처리를 유연하게 할 수 있다. (다형성 강화) 단, 데이터 이동 간에 반드시 형변환이 이루어지므로 오버헤드 발생. (박싱-언박싱이 꼭 일어난다) 제네릭의 경우 타입을 지정하기 때문에 다형성은 포기하지만 속도가 빨라진다. (객체를 일일이 타입별로 생성하지 않아도 됨, 중복 코드 줄어듦) 언박싱은 발생할지라도 박싱 과정은 생략할 수 있게 함. 메모리적 이점이 있다. 인터페이스와 추상클래스의 차이 (1) abstract class = 해당 클래스를 추상화해서 new로 생성할 수 없게 함. 추상 클래스 내부에 생성한 .. 2024. 1. 26.
[Unity] 같은 scene 에서 오브젝트 간 생성 순서 정하기 최종 프로젝트 문제해결 일지 #1 문제 1. 유니티 엔진 - Inspector 창에 text가 들어가지 않는 현상 최근 버전의 유니티는 TextMeshPro 사용을 권장하고 있다. 예전에 UI에서 많이 사용한 일반적인 Text 클래스는 사용에 제약이 있다. 따라서 name space에 using TMPro; 를 사용한 뒤 public TextMeshProUGUI 로 변수를 선언하면 Inspector에서 불러올 수 있다. 문제 2. 같은 scene의 Heirarchy에서 특정 오브젝트를 더 늦게 호출시키는 방법 문제상황) SelectScene에서 넘어온 캐릭터 정보 중 stat 3가지를 gamescene에서 canvas 로 띄우는데, 값이 0으로 출력됨. 시도) 스탯에 연결된 스크립트인 spawnedcha.. 2024. 1. 25.
[C#] 자료구조의 차이점 / 제네릭 기술면접 대비하기 #4 9. 배열과 List, ArrayList의 차이점은? (1) 배열 고정된 크기의 요소를 저장 크기는 생성 시점에 결정되며 변경이 불가능 인덱스를 사용해 요소에 직접 접근 가능 다차원 배열도 지원 (2) 리스트 동적으로 크기 조정 가능 요소의 추가, 삭제, 수정이 자유로움 인덱스를 사용해 요소에 직접 액세스 가능 제네릭으로 구현되어 타입의 안정성 보장 단점) 내부적으로 배열을 사용하기 때문에 추가, 삭제 시점에 배열을 다시 할당하고 복사하므로 성능 저하 발생 (3) ArrayList 동적으로 크기 조정 가능 요소의 추가, 삭제, 수정이 자유로움 인덱스 사용해 요소에 직접 액세스 가능 박싱, 언박싱으로 인한 성능 저하가 발생할 수 있음 장점) List는 선언한 자료형에 맞춰 데이터를 .. 2024. 1. 24.
[C#] 가비지 컬렉션 / 박싱과 언박싱 기술면접 대비하기 #3 7.가비지 컬렉션이란? 가비지 컬렉션이란 프로그래밍 언어에서 동적으로 할당된 메모리를 관리하기 위한 자동화 메모리 관리 기술이다. 이는 메모리 누수를 방지하고 코드 작성의 편의성과 안정성을 향상시키는데 도움을 준다. 대표적인 가비지 컬렉션의 알고리즘은 다음과 같다. 1) Reference Counting 객체가 참조되는 횟수를 계산해 0이 되면 해당 객체를 해제한다. 2) Mark and Sweep 사용 중인 객체를 마킹하고 마크되지 않은 객체를 메모리에서 해제한다. 3) Generational 객체를 세대별로 나누어 객체 생성 초기에는 메모리 회수 빈도를 높이다가 점점 오래될수록 낮추는 방식. 가비지 컬렉션은 가비지 컬렉터를 이용해 메모리를 관리하는 방법이다. 프로그래머가 직접 .. 2024. 1. 23.