본문 바로가기

TIL

[TIL]2024-3-08 / 52일차 - 최종 프로젝트 1주차 3일차

 

임시 타이틀 UI

1. 오늘의 기술면접 질문 - 접근제한자란 무엇이며, 각각 어떤 차이가 있는지 비교해서 설명해주세요.

답안 : 

접근 제한자란 클래스나 함수 등에 앞에 선언되어 접근 수준을 정합니다. 
일반적으론 Internal을 제외한 Public, Private, Protected를 사용하게 되며 
Public은 완전 개방으로 다른 클래스에서 모두 접근이 가능하고, 
Private는 완전 제한으로 해당 클래스 내에서만 접근이 가능하고, 
Protected는 일부 제한으로 상속 받는 자식 클래스들 까지 접근이 가능해집니다.

 


2. 오늘의 알고리즘 코드카타 - 덧칠하기

답안 :

using System;

public class Solution {
   public int solution(int n, int m, int[] section)
        {
            int answer = 0;
            int num = 0; //칠할 구역
       
            //벽의 길이 만큼 for문
            for (int i = 0; i < section.Length; i++)
            {
                //칠할 구역은 벽의 길이보다 짧아야함
                if (section[i] > num)
                {
                    num = (section[i] + m) - 1;
                    answer++;
                }
            }
            return answer;
        }
}

 

역시나 이번에도 문제 자체를 이해하는 것이 어려워지고 있는 느낌이다. 문제에서 요구하는 내용 중에서 알고리즘에서 요구하는 핵심이 무엇인가 파악하는 것이 점차 관건이 되고 있다. 사실 처음 코드는 이게 아니었지만, 다른 답안 중에서 많이 깔끔해 보이는 것을 찾아 기록하고자 이를 썼다.

 


3.오늘의 작업 - UI작업

 

오늘은 동적생성으로 UI를 보여주고 만들고 없애는 기능들을 구현했다.

UI 매니저가 이들을 담당하고

UI_Base를 상속받는 UI클래스들을 딕셔너리로 추가하여 이들을 사용하게 된다

(*여기서 피드백으로 딕셔너리의 장점으로 찾기가 쉬운 점 말고도 UI헤비한 프로젝트에선 무거워지는 단점이 생길 수 있단 이야기도 들었다.)

 

아무튼 그런 방식으로 UI_Title / Loading / Join / Option 창을 만들었다.

 

 

UI_Title = 게임 접속과 방 생성, 옵션 창 나가기가 존재

게임 접속 시에는 UI_Join을 팝업하고

방 생성 시에는 로딩창으로 넘어가서 로비 씬으로 넘어간다.

로딩하는 모습

이 부분은 네트워크 작업부분과 연계되어 바꿔야 하는 부분들이 있다.

로딩 화면에 경우 귀여운 기능으로 리소스 로딩스프라이트 내에 있는 스프라이트들을 모두 배열에 저장하여 랜덤으로 꺼내는 기능이 있어 랜덤한 사진이 나온다.

 

 

UI_Join의 모습

IP코드, 이후에는 암호화된 IP코드인 방 코드를 입력하여 접속하게 된다.

 

 

 

UI_Option의 기본 모습

버튼 말고도 ESC로 불러올 수 있고 끌 수 있다.

위에 톱니바퀴는 게임 옵션

스피커 아이콘은 사운드 조절

말풍선은 언어 선택이다.

 

화면에 보이는 것이 창모드 설정 밖에 없는 이유는

게임 매니저에서 현재 게임 스테이트를 체크하여 해당 씬에 맞는 기능을 띄워주기 때문이다.

 

현재 구분하는 부분은

메인메뉴인가? / 로비씬인가? / 게임씬인가?

이다.

 

 

메인 메뉴가 아닐 경우에는 게임 나가기 버튼이 추가된다.

 

 

 

게임 씬인 경우에는 로비로 가기와 스테이지 리스타트가 생겨난다.

 

 

 

로비 씬에서는 타이틀로 가기가 생겨난다.

 

 

사운드 옵션에 경우 현재 기본적인 사운드 매니저 (오디오 믹서를 불러오고 배경음악을 설정 - 오브젝트 풀링하는 효과음은 현재 없음)와 오디오 믹서를 추가하였고 PlayerPrefs로 설정 정보를 저장하고 불러온다. 이 사운드 설정 로드 지점은 현재 옵션창을 키는 순간이라 이후 조정이 필요하다.