내일배움캠프 30일차 TIL : 숙련 팀프로젝트 3일차, 인터페이스 특강

woollim·2024년 11월 4일
1

내일배움캠프TIL

목록 보기
28/36
post-thumbnail

■ 학습 개요

오늘 계획

  • 09:00~10:00 : 오전 회의 - 오늘 할일 정리
  • 10:00~12:00 : 플레이어 UI (수분, 체온) 추가 & bar UI 실시간 반영되도록 수정
  • 12:00~13:00 : 꾸준실습
  • 13:00~14:00 : 점심😁
  • 14:00~15:00 : 유니티 배치고사
  • 15:00~16:00 : 무기 & 음식 스크립터블 오브젝트 제작
  • 16:00~17:00 : 첼린지 특강
  • 17:00~18:00 : 수분관리 시스템 구현
  • 18:00~19:00 : 저녁😁
  • 19:00~20:00 : 물 스크립터블 오브젝트 제작
  • 20:00~21:00 : 오후회의 - 깃허브 팀프로젝트 병합
  • 21:00~00:00 : 캐릭터 애니메이션 작업

학습 회고

  • UI 프리펩을 수정하며 자잘한 오류들이 있어서, 디버깅에 꽤 많은 시간을 쏟았다.
  • 스크립터블 오브젝트로 음식과 물을 추가했다.
  • 인터페이스 특강을 통해 추상클래스와의 용도 차이점을 확실히 알게되었다.


■ 인터페이스 특강 메모

○ 추상화

  • 공통된 속성과 기능을 묶어줌
  • 확장성이 장점(인터페이스 등)

○ 인터페이스

  • 인터페이스는 행동에 대한 추상화 -> 다른 모듈이 들어올 수 있도록 대응해줌
  • 인터페이스는 상속이란 말보단 구현이라 표현함
  • 인터페이스를 구조를 계획하는데 오래걸리면 굳이 안써도 됨 -> 시간과 코드 구조 중 효율성을 따져 선택할줄 알아야 함
  • 추상클래스와의 차이점
    • 추상클래스 : 좀더 개념적인것. 주체가 있는 것(동물 - 댕댕이), a is b (사실상 동일한것에 활용)
    • 인터페이스 : 행동에 대한것(move, damage), a has b (a가 b를 들고있다)


■ 숙련 팀플 - 트러블 슈팅

○ 이벤트 시스템

  • 다른 팀원의 TestScene에 내가 만든 PlayerUI 프리펩을 추가했는데, UI가 제대로 작동하지 않는 오류가 있었다.
    인벤토리를 켜도 마우스 입력이 제대로 이루어지지 않아서 다른 씬과 비교하며 찾아보니 EventSystem이 없었다. 이벤트 시스템을 추가하니 정상 작동했다.
    • 이벤트 시스템(Event System)이 없는 씬에 UI 프리팹을 추가하더라도 이벤트 시스템이 자동 생성되지 않기 때문에 주의가 필요함

○ 프리펩 SerializeField 변수 해제

  • _UI 프리펩의 DropPosition
  • Player 프리펩의 Prompt Text
  • UI 프리펩을 새로 만든 후 위 사진과 같은 SerializeField 변수에 값 에 계속 Null이 뜨는 오류가 있었다. 프리펩을 하이러키 창에 올릴때마다 해제 되는건가 했는데, 그건 아니었다
    • Unity에서는 SerializeField 변수로 프리팹 간 연결을 수동으로 설정해 주어야 하며, 이 연결이 자동으로 해제되거나 초기화되지 않음
    • 다만, 프리팹을 인스턴스화할 때 연결된 다른 프리팹이 없거나 경로가 변경되면, Unity에서 경고 메시지가 표시될 수 있지만, 그 외에는 연결 상태가 유지됨.
      프리팹 간의 연결 관계는 해당 프리팹의 인스턴스가 있는 씬이나 프리팹 상호 간의 구조가 바뀔 때 주의해서 관리해야 함


■ 매일매일 알고리즘 11일차

○ 종이 자르기 (하)

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>

using namespace std;

int solution(int M, int N) {
    int sum = 0;
    int minV = min(M, N);
    int maxV = max(M, N);

    sum += minV - 1;
    sum += (maxV - 1) * minV;
    return sum;
}
  • 다른 사람 풀이
#include <string>
#include <vector>

using namespace std;

int solution(int M, int N) {
    return M*N-1;
}

○ 피보나치 수 (중)

○ 삼각 달팽이 (상)

0개의 댓글