이 글은 매우 매우 오래되었음을 알려드립니다!
유니티 인벤토리에서 우클릭시 아이템을 소모하며 적절한 효과를 줘야한다.
public enum으로 enum을 이용해 보다 효율적인 비교연산을 하도록 한다. 아이템 오브젝트에 string타입의 이름이 있지만, 문자열을 비교하는것은 무겁기에 enum으로 빠르게 비교하도록 한다.
static public UseItem함수로 모든 아이템에서 접근 가능하도록 한다. 스크립트를 아이템에 포함시킬 수 있으나, 어차피 메모리에 상주해야하며 계속 사용할 기능이기에 static 키워드를 사용한다.
0305추가 static은 쓰지말자...
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ItemEffect : MonoBehaviour
{
public enum ItemEnumName
{
_0_LesserHealthPotion,
_1_LesserManaPotion,
}
static public void UseItem(ItemEnumName enumName)
{
switch(enumName)
{
case ItemEnumName._0_LesserHealthPotion:
{
Debug.Log("체력 아이템 사용");
break;
}
case ItemEnumName._1_LesserManaPotion:
{
Debug.Log("마나 아이템 사용");
break;
}
}
}
}
우클릭시 소모 이벤트에서 static public 함수인 UseItem 함수를 호출하도록 한다. 매개변수는 자신의 enumType
public void OnPointerClick(PointerEventData eventData) //마우스 클릭 오버라이드
{
if(eventData.button == PointerEventData.InputButton.Right) //버튼 우클릭시
{
if (mItem != null) //해당 슬롯의 아이템이 null이라면 return
{
{
// 소비
ItemEffect.UseItem(mItem.GetItemEnumName());
Debug.Log(mItem.GetItemName() + " 을 사용했습니다.");
SetSlotCount(-1);
}
}
}
}
Static을 제거하고 수정한 ItemEffect
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ItemEffect : MonoBehaviour
{
//ITEM OPTION//
[Header("_0_LesserHealthPotion")]
[SerializeField] private float _0_HealAmount;
[Header("_1_LesserManaPotion")]
[SerializeField] private float _1_HealAmount;
public enum ItemEnumName
{
_0_LesserHealthPotion,
_1_LesserManaPotion,
}
//플레이어 함수에 접근하기 위한 컨트롤러
private PlayerController mPlayerController;
private void Awake()
{
//Serialized Field를 사용하지 않고 스크립트로 찾아보자
mPlayerController = GameObject.FindWithTag("Player").GetComponent<PlayerController>();
}
//아이템 사용시 호출될 함수
public void UseItem(ItemEnumName enumName)
{
switch(enumName)
{
case ItemEnumName._0_LesserHealthPotion:
{
mPlayerController.HealPlayer(_0_HealAmount);
break;
}
case ItemEnumName._1_LesserManaPotion:
{
Debug.Log("마나 아이템 사용");
break;
}
}
}
}
'unity game modules' 카테고리의 다른 글
[유니티] 안개 효과 (던전 입장 효과) (0) | 2022.07.16 |
---|---|
[유니티] 3인칭 움직이기 (0) | 2022.07.16 |
[유니티] 공격(스킬) 범위 표시 (0) | 2022.07.16 |
[유니티] 오브젝트 풀 (Object Pool) (0) | 2022.07.16 |
[유니티] 인벤토리 장비 슬롯 (0) | 2022.03.05 |