ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2024.3.15
    TIL 2024. 3. 15. 20:48

    오늘은 드래그 앤 드랍으로 오브젝트 배열하는거랑 버튼 알맞은 순서대로 누르기 같은 트릭을 만들어보았습니다.

     


     

    드래그 앤 드랍의 경우

    IDragHandler, IEndDragHandler 를 이용해서 만들어주었습니다.

    둘다 

    OnDrag(PointerEventData eventData)와 OnEndDrag(PointerEventData eventData)를 만들어서 내용을 채워줘야합니다.

    OnDrag는 선택하고 누르고 있을 때이고 OnEndDrag는 누르는 것을 멈추면 발동합니다.

     

    원래는 OnDrag만 사용해서 만들어주려고 했는데 계속 누르고 있으면 collider를 Addcomponent를 해도 충돌은 하지만 OnTrigger한 것처럼 통과되어버려서 지정한 공간을 벗어나게 되더라구요.

    그래서 충돌은 감지하기 때문에 충돌할 경우에 true로 해서 false인 경우에만 움직일 수 있도록 해주었습니다.

    이렇게만 만들면 충돌 이후에 움직이게 할 수 없기 때문에 OnEndDrag에서 다시 false로 바꿔주므로써 마우스 버튼을 누르지 않게되면 다시 움직일 수 있도록 해주었습니다.

     

    이렇게하니깐 일부러 밖으로 드래그하니깐 어떨 때는 나가지고 어떨 때는 안나가지게 되어서 collider를 하나 더 추가해줘서 이중으로 나가지 못하게 처리해주었습니다.

    이러고 일부러 나가게 하려하면 나가는건 안비밀..

     


     

    버튼을 순서대로 누르게 하는 것은 책장에서 책을 꺼내게 되면 숨겨져있던 버튼이 나오게 되고 그것을 순서대로 눌러야한다! 입니다.

     

    먼저 책장에 책을 만들어주었습니다. Grid Layout Group을 이용해서 만들어주었습니다.

    이렇게 되면 책을 선택할 때 Destroy되도록 설정해주었는데 자리가 한칸씩 앞으로 당겨지면서 마지막 끝부분이 사라지게 됩니다.

    그래서 그냥 prefab으로 만들지 말고 둘까 싶었지만 localPosition을 이용해서 계산해서 Grid Layout Group을 사용한 것처럼 나열해주었습니다.

     

    그 다음에는 버튼을 설정해주었는데요.

    하던대로 버튼을 prefab으로 해서 생성해주려고 했는데 문제는 위치가 일관성이 없다는 것입니다.

    그리고 두번째로 버튼을 눌렀을 때의 그 값을 구독 형식을 이용해서 받으려고 했는데..

    버튼이 4개라면 4개의 버튼을 처리하는 script에서 한개만 눌렀지만 버튼 4개의 script 함수는 같기 때문에 4개가 한꺼번에 처리되는 그런 일이 나와서..

    버튼은 그냥 생성해서 두도록 했습니다.

     

    그리고 버튼마다 script를 넣어주려고 했던 것을 빼버리고 버튼을 누르면 처리하는 script에 사용되는 버튼을 배열로 정리해서 1번 버튼을 누르면 index == 0 이 true가 되는 식으로 만들고 순서대로 누르지 못할 경우 다시 전부 false로 만들어서 다시 누르도록 만들어주었습니다.

    하지만 틀렸다는 소리를 주지 않으면 플레이어는 모르기 때문에 더욱 어렵게 느껴질 것이고 그래서 그 부분은 고민이긴합니다.

     

    추가적으로 책들 사이에서 특정한 책만 꺼낼 수 있도록 하는 것을 만들게되면 책의 위치로 숫자를 파악하거나 아니면 책을 꺼냈을 때 숫자의 모양이 남게하거나 할 수도 있을 것 같습니다.

     


     

    그리고 오늘의 기술 면접 질문!

     

    9. 박싱과 언박싱에 대하여 설명해주세요.

    박싱은 값 형인 변수를 참조 형 변수로 변형시키는 것이고, 언박싱은 참조 형 변수로 박싱된 변수를 원래의 값 형으로 되돌리는 것을 말합니다.

     

    박싱을 하게되면 배열에 int와 string을 같이 넣는 등의 편하게 처리할 수 있지만 언박싱을 하게 되면 그만큼 가비지가 쌓이게 되며, 박싱과 언박싱을 할 경우에 안하는 경우보다 몇 배의 시간이 소요된다고 합니다.

    이러한 단점을 보안하는 것이 바로 제네릭입니다.

     

    이러면 내일 기술 면접 질문에 제네릭이 나오지 않을까 싶은데요.

    제네릭은 내일이 아니더라도 나올 수 있기 때문에 그 때 다시 적는걸로 해보겠습니다.

     

    'TIL' 카테고리의 다른 글

    2024.3.27  (1) 2024.03.27
    2024.3.26  (0) 2024.03.26
    2024.3.14  (1) 2024.03.14
    2024.3.13  (4) 2024.03.13
    2024.3.12  (0) 2024.03.12
Designed by Tistory.