Unity: 인벤토리에서 드래그 드롭 문제, Public시 변수 문제

이재형·2024년 6월 7일
0
post-thumbnail
post-custom-banner

Unity 공부

배운 내용

1. 인벤토리에서 드래그 드롭 문제

문제 발생: 드롭을 하면 플레이어의 아이템 정보를 넘기고 Null을 하는데 Null한 상태에서 드래그가 끝난 아이템 정보에 NUll이 되서 아이템이 사라지는 문제가 발생함

문제 진행: Null처리를 함으로써 데이터가 사라지지 않는 방법을 생각함

문제 해결: 실제로 해보니 Null처리를 함으로써 아이템이 사라지지않고 유지되는 것이 확인됨

// 드래그 시작
public void OnBeginDrag(PointerEventData eventData)
{
    // 아이템 정보 플레이어한테 전달
    GameManager.Instance.Player.currentData = this.data;
    GameManager.Instance.Player.dataQuantity = slotQuantity;
    GameManager.Instance.Player.dataDelayTime = delayTime;

    GameManager.Instance.Player.cursor.itemDrag.SetActive(true);
    GameManager.Instance.Player.cursor.itemDrag.GetComponent<Image>().sprite = data.icon;
    Clear();
}

// 드래그 끝났을 때
public void OnEndDrag(PointerEventData eventData)
{
    if (data != null)
    {
        return;
    }

    data = GameManager.Instance.Player.currentData;
    slotQuantity = GameManager.Instance.Player.dataQuantity;
    delayTime = GameManager.Instance.Player.dataDelayTime;
    DelayCheck();
    Set();
    GameManager.Instance.Player.cursor.itemDrag.SetActive(false);
}

**설명:
1. 아이템을 드래그 시작할 때 드래그한 아이템이 사라지게 Clear실행
2. 자신의 위치에 드롭을 하면 플레이어의 정보를 드래그 시작한 슬롯으로 들어감
3. 원래라면 다시 드롭이 끝났으니 드래그가 끝나서 드래그 시작한 슬롯의 정보가 사라지지만
Null처리를 하여 사라지지않게 함

**


문제 해결 내용

1. 다시 발견한 커서 문제(Unity에서 public 변수 처리)

public bool invenCursor = true;
public bool craftCursor = true;

public GameObject itemDrag;

ItemData data;

void Start()
{
    GameManager.Instance.Player.cursor = this;
    gameObject.SetActive(false);
    invenCursor = true;
    craftCursor = true;
}

public void CursorCheck()
{
    if (invenCursor && craftCursor)
    {
        Cursor.lockState = CursorLockMode.Locked;
    }
    else
    {
        Cursor.lockState = CursorLockMode.None;
    }
}

설명: 코드는 해결한 코드이므로 설명으로 진행

문제 발생: public으로 변수를 처음 선언하고 값을 지정을 하게 되는데 invenCursor, craftCursor변수가 선언 부분에서 false나 true로 변경해도 값이 계속 변하지 않는 문제가 발생

문제 진행: Unity에서 직접 건들거나 Start에서 변수 값을 변경하는 방법을 생각함

문제 해결: Unity에서 건들거나 Start에서 변경하는 모든 방법으로 해결이 가능함


정리

배운 내용

1.

해결 못한 문제

1. 없음

문제점

1. 없음

profile
한국사람
post-custom-banner

0개의 댓글