본문 바로가기

TIL

[TIL]2024-3-15 / 57일차 - 최종 프로젝트 2주차 5일차

우리 게임은 귀여운 캐릭터들이 귀엽게 퍼즐을 풀어나가는 전체 이용가 게임입니다.

1. 오늘의 기술 면접 -

  • 박싱과 언박싱에 대하여 설명해주세요.
    • (꼬리질문) 박싱, 언박싱을 사용할 때 주의해야 할 점이 있다면 무엇이 있나요?

박싱과 언박싱이란?

단순하게는 박싱(boxing)은 값(value) 형식을 참조(reference) 형식으로 변환 해주는 것
언박싱은 박싱했던 값을 다시 원상태로 복귀 시키는 것을 의미합니다.
object형식을 통해 진행 되는데 박싱하면 힙 영역에 값 형식을 새 개체에 복사하여 할당시켜 저장하게 됩니다.
단순히 스택에서 힙으로 값을 복사하는 행위는 박싱이라고 하지 않습니다.

사용 시 주의할 점?

우선 새로운 개체로 복사하여 저장한다는 점에서 유추할 수 있듯이 메모리 사용량에 주의해야 합니다.
또한 값을 옮기는 데에 메모리 참조를 많이 하게 되어 시간적으로도 오버헤드가 발생할 수 있습니다.
언박싱에 경우에도 비슷한 문제와 더불어 가비지를 남기게 되어 가비지 콜렉션을 유발할 수 있습니다.
그래서 가능하면 제너릭을 이용하면 성능적 측면에서 도움이 될 수 있습니다.

 


2. 오늘의 알고리즘 코드카타 - 옹알이(2)

 

답안 :

//이번에는 인터넷에 검색해서 방법을 찾아봐야했다.
//초기 구상하던 구조는 비효율적이었다.

using System;

public class Solution {
    public int solution(string[] babbling) 
    {
    string[] sample = { "aya", "ye", "woo", "ma" };
    int answer = 0;

	for (int i = 0; i < babbling.Length; i++)
            {
                for (int j = 0; j < sample.Length; j++)
                {
                    if (!babbling[i].Contains(sample[j] + sample[j]))
                    babbling[i] = babbling[i].Replace(sample[j], " ");
                }

                babbling[i]= babbling[i].Trim();
                if (babbling[i] == "")
                    answer++;
            }
        return answer;
    }
}

 

풀이를 참고하여 따라서 풀었기 때문에 해당 내용이 담긴 블로그 주소를 닮고자 한다.

블로그 주소


3. 오늘의 작업 - 레이저 / 카메라

 

레이저 오브젝트

 

레이케스트를 쏘아서 닿는 지점을 받아 그 지점을 라인 렌더러의 도착부분 + 이펙트 생성부분으로 만들어 주는 코드를 이용하여 만들었다. 닿지 않는다면 현재 위치에서 x = 50의 지점까지 라인을 그리고 맞는 이펙트는 SetActive(false)가 된다.

 

덕분에 어느 방향으로 움직여도, 회전해도 자연스럽게 레이저가 발사되는 모습이다.

 

캐릭터 죽는 기능이 생기고 나면 이 레이케스트에 닿으면 죽는 방식으로 할 예정이다.

추가 구현으로는 굴절 박스를 이용해 이 레이저를 굴절 시킬 수 있는 방법이 없을까 생각하고 있다.

이런 식으로 말이다.

 

 

또한 레이저의 빛나는 부분은 URP에 있는 블룸을 이용해 만들었기에 블룸을 끄면 초라한 일직선으로 바뀌긴 한다…

 

해당 레이저의 쉐이더

2D 쉐이더 옵션이 사라지면서

알파를 스플릿으로 값 분리를 하여 연결해줘야 한다는 것을 좀 늦게 알아챘다.

 

마지막 부분에는 2가지 파티클 이펙트를 통해 맞는 이펙트를 구현했다.

 

 

 

이런 식으로 레이저를 막는 것을 구현하고 싶기 때문에 필요한 부분이었다.

 

 

 

카메라 무브먼트

 

맵 에디터에서 사용하기 위해 우클릭 시 카메라를 드래그하여 이동 가능하고 마우스 휠을 통해 부드럽게 확대 축소 되는 카메라 기능을 구현했다.

 

부드러운 확대 축소를 위해 SmoothDamp를 이용하여 OrthographicSize를 조절하는 방식이다.

 

 


 

벌써 또 한 주가 끝나 버렸다.

뭐 많이 한 것 같지도 않은데 끝나버리는 느낌도 있다.

UI 작업이 빨리 끝남에 따라 좀 붕뜬 타이밍에 맵 오브젝트를 만들고 있는데 이것이 좀 재미있다.

 

확실히 코딩 보다는 비주얼적인 것을 만질 때 재밌어하는 것 같다.

 

귀여운 우다다다를 보면서 마무리 하겠다.