일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 노션관계형
- 마이크작동
- 블루투스마이크
- 유니티
- unity
- RPG게임
- 노션으로 가계부쓰기
- 갤럭지버즈+
- Relation
- 깃허브 커밋
- 커밋
- button
- button onclick
- 노션꿀팁
- 마이크작동안됨
- JSX
- 노션가계부
- 1인 게임개발
- animatorcontroller
- 깃허브오류
- 깃허브 #깃명령어
- React
- 깃허브
- props
- 노션활용
- flutter오류#flutter#flutter초기세팅
- unrelated histories
- 노션
- notion
- Today
- Total
광산김가네
[모각코][Unity/유니티]0825 TIL_인벤토리 기능 구현하기 본문
이번회차에서는 주로 인벤토리창 기능을 구현해보았다.
1.인벤토리창
저번회차에서 만들었던 서브메뉴창과 비슷한 방식으로 인벤토리 약자인 I 키를 누르면 나타나고, 사라지는식으로 구현하려한다. 또한 아이템을 플레이어가 줍고, 인벤토리창의 칸에 담기는 기능까지 구현하려고한다. 따라서 gamemanager 스크립트의 update 함수에 아래와 같이 추가해주엇다.
void Update(){
//Sub Menu 설정
if(Input.GetButtonDown("Cancel")){
if(MenuSet.activeSelf)
MenuSet.SetActive(false);
else
MenuSet.SetActive(true);
}
//Inventory 설정
else if(Input.GetKeyDown(KeyCode.I)){
if(Inventory.activeSelf)
Inventory.SetActive(false);
else
Inventory.SetActive(true);
}
}
여기서 Inventory는 public gameobject로 받아줄것이다.
1-1) ui설정
위의 그림과 같이 오브젝트들을 만들어주었다. 오브젝트 생성은 앞서 만든 서브메뉴와 비슷한 과정으로 만들었는데, 그중 슬롯창, 즉 아이템목록 밑에 있 일정한 규격의 네모 ui를 여러개 만들어주기위해 grid layout group 컴포넌트를 사용해주었다. (+shadow 라는 컴포넌트도 추가해주었는데 이는 ui적 부분이라 설명은 따로 기재하지않겠다)
크게 설정할수있는 부분은
-cell size: 한칸당의 크기
-spacing: 칸끼리의 거리
-child alignment: 칸들의 전체적인 정렬
-constraint: 제한점; 열의 개수 혹은 행의 개수에 제한을 두어서 그이상 넘어가지못하도록 하는것
이 있었다.
1-2) 인벤토리창 기능구현_아이템 줍기
먼저 item 정보를 가지고있는 스크립트를 만들어주고,
그 스크립트를 받아서 리스트로(여러개의 item을 관리할것이므로) 만들수있는 오브젝트를 만들었다.
그 다음, itemDatabase 스크립트에서 for문을 통해 public으로 받은 위치로 스프라이트들을 여러개 생성해주었다
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Inventory : MonoBehaviour
{
public List<Item> items = new List<Item>();
//public delegate void OnChangeItem();
//public OnchangeItem OnchangeItem();
public bool AddItem(Item _item)
{
items.Add(_item);
//OnchangeItem.Invoke();
return true;
}
private void OnTriggerEnter2D(Collider2D collision){
if(collision.CompareTag("FieldItem"))
{
Debug.Log("d");
FieldItem fielditems = collision.GetComponent<FieldItem>();
if(AddItem(fielditems.GetItem()))
fielditems.DestroyItem();
}
}
}
위의 코드를 player에 적용시켜서 아이템을 접촉하면 리스트에 추가하게끔하였다.
1-3) 아이템 인벤토리창에 띄우기
inventoryUI라는 스크립트를 추가로 만들어 인벤토리 오브젝트에 적용시켜주었다.
<결과화면>
이렇게해서 인벤토리창까지 구현을 완료하며 마지막회차를 마쳤다.
+참고영상
https://www.youtube.com/watch?v=74vxsqQsFHE&t=245s
'TIL(Today I Learn)' 카테고리의 다른 글
[Flutter] Device Manager 실행안됨 (0) | 2022.02.16 |
---|---|
[Flutter]오류 해결방법 모음 (0) | 2022.01.20 |
[모각코][Unity/유니티]0821 TIL_퀘스트 기능 구현 마무리 , 서브메뉴, 저장기능 만들기 (0) | 2021.08.22 |
[모각코][Unity/유니티]0818 TIL_퀘스트 기능 구현하기 (0) | 2021.08.20 |
[모각코][Unity/유니티]0814 TIL_애니메이션 구현, 맵 탐색 기능 추가 (0) | 2021.08.16 |