2024년 7월 26일 금요일 개발일지 / 두 번째 면접 테스트 + 다섯 번째 캐릭터

2024. 7. 26. 20:58나의 개발자 기록/본 캠프 개발 일지

2024년 7월 26일 금요일


What I did today : 두 번째 면접 테스트 + 다섯 번째 캐릭터

 

오늘 오전에는 어제 만들지 못했던 네 번째 캐릭터의 공격 애니메이션을 만들었습니다. 뭔가 어설픈 느낌이 많이 강하긴 하지만 방패로 때리는 듯한 모션을 통해서 공격하는 느낌을 주었습니다. Aseprite로 공격 애니메이션을 다 만들고 나서는 스프라이트 시트로 만들어서 유니티에서 애니메이션을 적용 시켰고, 만든 캐릭터를 팀원분들께 공유했습니다.

 

 

그 다음 작업으로는 팀원분 중 한분에게 다음 캐릭터를 만들만한 모티브 캐릭터와 이름을 정해달라고 말한 뒤에, 원하시는 캐릭터 컨셉에 맞게 스테이블 디퓨전으로 픽셀 캐릭터를 뽑아봤습니다. 점심 시간에 걸처 여러개 뽑은 것 중 괜찮게 나온 캐릭터들 중 팀원분이 마음에 드시는 캐릭터로 선정하게 됐고, 점심을 먹은 뒤에 바로 스테이블 디퓨전으로 일러스트와 아이콘을 뽑는 작업을 진행했습니다.

 

 

일러스트를 여러 장 뽑으면서 팀원분들과 함께 면접 테스트에서 쓰일 자기소개서를 체크했고, 한 두 번 수정 작업을 거쳐서 자소서를 완성했습니다. 그다음에는 저번에 제시해주셨던 면접용 CS 지식 질문에 대해서 정리하였고, 약 두 번정도 정리하면서 해당 내용들을 외웠습니다. 오후 3시 반쯤부터 팀장님부터 시작해, 부팀장님, 그리고 저, 남은 팀원분 순으로 담당 튜터님의 면접 테스트를 진행했고, 이번에는 미리 제시해주셨던 내용이 있었던 지라 저번처럼 대답을 못하진 않았습니다. 대신 이번 피드백으로서 이론적인 부분을 너무 달달 외워서 대답해서 그런지 기계적인 느낌이 난다고 하셨습니다. 그리고 이해를 해서 내걸로 만든 다음에 대답하면 상관 없는데, 그냥 너무 무턱대고 외워서 대답하는 건 문제가 있을 수 있다고 하셨습니다.

 

 

그렇게 면접 테스트가 끝나고, 저는 뽑은 여러 일러스트를 팀원분들에게 공유한 뒤, 가장 투표가 많았던 일러스트를 아이콘으로 만들었습니다.

 

 

그다음 바로 Aseprite로 Idle 상태와 죽는 애니메이션을 제작했습니다. 이제 공격을 제외한 기본적인 상태 작업들을 익숙해져서 그런지 속도가 빨라지는 것 같네요.

 

 

이번 공격은 얼음과 관련된 메이지 캐릭터이기 때문에, 얼음 공격을 하는 것을 모티브 삼은 것기존의 원거리 유닛들처럼 제작했습니다.

 

그 다음 투사체 에셋 중에서 이 캐릭터와 잘 맞는 투사체를 하나 골라서 수정한 다음에 애니메이션 작업과 함께 캐릭터를 만들었습니다. 그리고나서 저녁을 먹은 뒤에 팀원분들에게 공유했고, 남은 시간에는 다음 만들 캐릭터의 모티브 정보를 다른 팀원분께 전달 받고, 오늘 하루 있었던 일들을 개발일지(TIL)에 정리하고 마무리했습니다.


면접 질문 대비 : C#의 event란 무엇인가요?

 

public class Publisher
{
    public delegate void Notify(); // delegate 선언
    public event Notify OnNotify;  // event 선언

    public void RaiseEvent()
    {
        if (OnNotify != null)
            OnNotify();
    }
}

public class Subscriber
{
    public void Subscribe(Publisher publisher)
    {
        publisher.OnNotify += HandleEvent;
    }

    private void HandleEvent()
    {
        Console.WriteLine("Event received!");
    }
}

// 사용 예시
Publisher pub = new Publisher();
Subscriber sub = new Subscriber();
sub.Subscribe(pub);
pub.RaiseEvent(); // Event received!


이벤트는 특정 작업이 발생했음을 알리는 메커니즘입니다. 이벤트는 대리자(delegate)를 사용하여 구현되며, 주로 GUI 애플리케이션에서 사용됩니다. 이벤트를 통해 클래스는 자신에게 발생한 중요한 사건을 외부에 알릴 수 있습니다. 이벤트를 구독한 메서드는 사건이 발생할 때 자동으로 호출됩니다.


면접 질문 대비 : Unity에서 사용하는 델리게이트 혹은 이벤트에는 어떤 것이 있나요?

 

using UnityEngine;
using UnityEngine.Events;

public class GameEvent : MonoBehaviour
{
    public UnityEvent OnGameStart;

    private void Start()
    {
        if (OnGameStart != null)
            OnGameStart.Invoke();
    }
}

public class GameHandler : MonoBehaviour
{
    public GameEvent gameEvent;

    private void OnEnable()
    {
        gameEvent.OnGameStart.AddListener(OnGameStart);
    }

    private void OnDisable()
    {
        gameEvent.OnGameStart.RemoveListener(OnGameStart);
    }

    private void OnGameStart()
    {
        Debug.Log("Game Started!");
    }
}

 

Unity에서는 델리게이트이벤트를 활용하여 다양한 작업을 수행할 수 있습니다. 대표적인 예로 UnityEvent와 사용자 정의 델리게이트가 있습니다.