본문 바로가기

질문과답변

240124 ~ 240131 척호갑사전 팀프로젝트 질의응답

1. 옵저버 패턴

옵저버가 하나의 요소(함수, 클래스 등등)를 주시하고 그 값이 어떻게 변화하는지 확인함

변경된 값이 일정 조건이 되면 옵저버는 옵저버에게 그 값이 필요하다고 한 다른 요소나 함수들에게 값을 전달함

옵저버에게 그 값이 필요하다고 하는 것을 구독한다고 함

 

 

조건문을 달아서 값이 변경됐을 때 어떻게 작동하라는 방식이면 간단한데 왜 이런 번거로운 추가 작업을 하느냐

이런 번거로운 일을 하는 이유 : 확장성이 좋기 때문

 

구조가 커질수록 원하는 기능에 맞춰 조건을 달기 어려워지고 심지어 누락될 수 있음

하지만 옵저버 패턴을 사용한다면 구독만 해놓고 원하는 상황에서의 값만 변경시켜주면 되기 때문에 훨씬 간단해짐

 

지금 작업하는 캐릭터 움직임 구현에서는 Event 를 이용해 옵저버 패턴을 간단하게 구현해내고 있음

 

2. getComponent의 특징과 상속

상속받은 클래스가 같은 스크립트가 2개 이상 있을 경우, 값 수정됐을 때, 유니티 getcomponent특성상 inspector 창에서 위의 스크립트에게만 변경사항을 전달하게 됨 그래서 TopDownMovement 에서 변경된 위치방향 값이 TopDownEnemyController가 상속받은 CharacterController에게만 전달하고 TopDownContactEnemyController가 상속받은 CharacterController에선 값 변경 없음

 

3. git 올리고 내려받는 기본 절차

1). main 은 완전무결하게 돌아가야함(절대 오류 발생하면 안 됨)

 

2). branch 에 수정 사항이 있다면 이 내용이 최신이기 때문에 main으로 choose a branch to merge 또는 pull request를 하여 main을 최신화 해야함(my branch to main)

 

3). 그 이전에 다른 사람이 main에 내용을 추가하여 변경사항이 있을 수 있으니 main 에서 petch origin을 진행하여 본인 branch와 main의 최신화가 같은 상황인지 확인

 

4).    main의 내용과 branch의 내용이 다르다면 main to branch 를 먼저 진행하여 branch에서 오류와 conflict를 모두 해결

 

5). branch to main 을 진행하여 내가 수정한 최신 내용을 main에 merge진행

 

345 과정을 진행하면 main은 완전한 상태를 유지하면서 내 branch에서 오류와 conflict를 처리하게됨

 

대충 이렇게 생각하면 될듯

choose a branch to merge  -> 내가 main에 직접 merge하여 main을 수정

pull request -> main을 담당하는 사람이 있으면 그 사람에게 변경사항을 올려 main 수정해달라 요청

 

6). 345번의 과정은 시간을 정해 한번에 받는게 편함(주로 출근하여 merge 받고 작업 시작)

 

 

 

4. 카메라가 맵 범위를 넘어가지 않게 구현하고 싶은데 어떻게?

1). 카메라와 충돌하는 맵 벽 collider를 맵 내부로 만들어 캐릭터가 벽에 붙더라도 collider밖에도 맵이 존재하기 때문에 보여지는 모습으로는 문제 없이 설정 가능

 

 

2).2D 카메라의 범위를 제한(카메라를 캐릭터 따라가게 하다가 벽에 부딫히는 좌표값 이상이나 이하가 되면 그 좌표값으로 고정하도록 코드 작성

 

 

3).

https://velog.io/@cedongne/Unity-2D-%EC%B9%B4%EB%A9%94%EB%9D%BC-%EB%B2%94%EC%9C%84-%EC%A0%9C%ED%95%9C%ED%95%98%EA%B8%B0