본문 바로가기

수업/Unity 2주 프로젝트 및 공부

Unity 프로젝트 및 공부 13일차

<오늘 진행할 일>

인벤토리

아이템 사용


<오늘의 공부>

1. Grid Layout Group

: Grid Layout Group 컴포넌트를 가지고 있는 부모 오브젝트안에 있는 자식 오브젝트들을 정렬시켜준다.

(하위 오브젝트를 레이아웃 요소로 만들어버리는 것이라고 생각한다.)

파라미터 기능
Padding 상위 Rect 크기에 대한 상하좌우 패딩영역(여백)을 설정
Cell Size 레이아웃 요소가 사용할 셀의 크기를 설정
Spacing 레이아웃 요소간의 간격을 설정
Start Corner 첫 요소가 위치하는 코너를 설정
Start Axis 요소를 배치할 방향의 주축을 설정
Child Alignment 레이아웃 요소의 정렬 방식을 설정
Constraint 자동 레이아웃 시스템을 지원하기 위해 격자무늬의 행렬 수를 제한 (강제 행 이동)

 

2. 마우스 클릭에 관한 이벤트를 가져오는 인터페이스 (using UnityEngine.EventSystem)

인터페이스 이름 기능 및 나오는 멤버 함수
IPointerEnterHandler

마우스가 해당 오브젝트에게 닿아 있을 때 발생하는 이벤트

멤버 함수 : OnPointerEnter

IPointerExitHandler

마우스가 해당 오브젝트에게서 나갔을 때 발생하는 이벤트

멤버 함수 : OnPointerExit

IPointerClickHandler

클릭했을 때 발생하는 이벤트

멤버 함수 : OnPointerClick

IBeginDragHandler

드래그 시작시 왼쪽 버튼을 처음 누를때 발생하는 이벤트

멤버 함수 : OnBeginDrag

IDragHandler

드래그 중일때 발생하는 이벤트

멤버 함수 : OnDrag

IEndDragHandler

드래그가 멈췄을 때 발생하는 이벤트

멤버 함수 : OnEndDrag

IDropHandler

마우스 클릭을 끝냈을 떄 발생하는 이벤트

멤버 함수 : OnDrop

※OnEndDrag와 OnDrop의 차이

: 인벤토리 슬롯을 만들었을 때, OnEndDrag는 단순히 드래그가 끝났을 때마다 호출되고 OnDrop은 다른 슬롯의 위에서 드래그를 끝냈을 때 호출된다.

(OnDrop 또는 드래그 관련 이벤트가 있는 오브젝트끼리 일때만 호출되는건지도 모르겠다.)

 

3. 프리팹의 Serialized 사용/미사용

: 프리팹으로 된 오브젝트들의 Serialized는 자기 자신 안에있는 객체들만 참조 가능하기에, Hierarchy에 있는 객체를 참조하는 것은 의미가 없다.

(이미 Hierarchy에 꺼내놓은 것은 드래그해서 넣으면 되기에 상관X, 인 게임 내에서 프리팹을 생성에서 사용할 경우에 해당되는 것)

 

4. Image 컴포넌트의 Raycast Target

: 광선을 쏠때 해당 오브젝트가 맞는가? 체크 == true

ex) 인벤토리의 슬롯이 드래그 하는 모습을 보여주기 위해 DragSlot이라는 슬롯을 만들어 Slot위에 렌더되게 했더니 선택 및 이동이 안되는 문제가 발생. DragSlot에 Raycast가 선택이 되어있어 다른 슬롯과의 충돌처리에 방해를 해서 발생한 것이었다.

 

5. 예외처리에 Debug.Log를 활용하자

: for문, if문, switch문 등을 사용할 때 오타나 넣지 않았을 경우를 대비하여 Debug.Log를 써주면 나중에 무엇이 틀렸는지 무엇을 빼먹었는지 확인하기가 쉽다.

 

6. [Tooltip]

: 특정 변수의 왼쪽 or 위쪽에 작성하면, 인스펙터 창에 뜨는 해당 변수의 부분에 마우스를 올릴때 설명이 뜬다.

ex) 

 

7. Text 컴포넌트의 BestFit

: 체크 == true : 텍스트 영역의 크기에 글자 크기를 맞추겠다.

 - Min Size : 바뀌는 글자 크기의 최소 사이즈

 - Max Size : 바뀌는 글자 크기의 최대 사이즈

 

8. [TextArea]

: 인스펙터 창에 여러줄의 글을 작성 할 수 있도록 만든다.

public string desc;
: 인스펙터 창에 1줄만 쓸 수 있게 나온다.

[TextArea] public string desc;
: 인스펙터 창에 여러줄의 텍스트를 쓸 수 있도록 나온다. (마치 UI-Text에 텍스트를 써넣는 창처럼)

 

9. 스택 오버플로우

: 함수 → 함수 → 함수 → 함수로 자주 호출되면 오류가 발생되게 되는 것.


<오늘 진행한 일>

 

 

1. 인벤토리 

: 아이템을 습득 한 후 'I키'로 인벤토리를 열어 아이템을 습득했음을 나타내었습니다.

아이템이 들어있는 슬롯에 마우스를 가져다 대면 툴팁이 보이도록 했으며, 아이템이 들어있는 슬롯을 클릭하여 드래그하면 아이템이 다른 슬롯으로 옮겨지도록 하였습니다.

 

 

 

 

 

2. 아이템 사용

: 소비 아이템의 경우에는 아이템 사용 시 스테이터스의 특정 부위를 회복되게 하였습니다.

방비 아이템은 소비되는 것이 아닌 우클릭시 바로 장착이 되도록 하였습니다.

 

 

 


- 참고영상 케이디의 유튜브

https://www.youtube.com/playlist?list=PLUZ5gNInsv_Nzex8Cvxce_1zjUf0cNWY9

 

유니티 강좌 [3D FPS 서바이벌 생존] - YouTube

유니티 강좌 - 3D 게임 제작 스킬을 배워보는 강좌

www.youtube.com