微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

库存不良视觉问题

如何解决库存不良视觉问题

我正在为我的手机游戏制作库存系统。当我单击播放按钮时,我会在其中装载物品,当我拿起物品时,它就会发生在我身上:

enter image description here

拳头打开库存时,统一添加物品槽;提货时,统一添加一个物品槽... 但是如果我先领取物品然后打开库存,就不会有这个问题。

displayInventory.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;

public class displayInventory : MonoBehavIoUr
{
    public InventoryObject inventory;

    public float X_SPACE_BETWEEN_ITEM;
    public float Y_SPACE_BETWEEN_ITEM;
    public float X_START;
    public float Y_START;
    public int NUMBER_OF_COLUMN;

    Dictionary<InventorySlot,GameObject> itemsdisplayed = new Dictionary<InventorySlot,GameObject>();

    private void Start()
    {
        Createdisplay();
    }

    private void Update()
    {
        Updatedisplay();
    }

    public void Updatedisplay()
    {
        for (int i = 0; i < inventory.Container.Count; i++)
        {
            if (itemsdisplayed.ContainsKey(inventory.Container[i]))
            {
                itemsdisplayed[inventory.Container[i]].GetComponentInChildren<TextMeshProUGUI>().text = inventory.Container[i].amount.ToString("n0");
            }
            else
            {
                var obj = Instantiate(inventory.Container[i].item.prefab,Vector3.zero,Quaternion.identity,transform);
                obj.GetComponent<RectTransform>().localPosition = GetPosition(i);
                obj.GetComponentInChildren<TextMeshProUGUI>().text = inventory.Container[i].amount.ToString("n0");
                itemsdisplayed.Add(inventory.Container[i],obj);
            }
        }
    }

    public void Createdisplay()
    {
        for (int i = 0; i < inventory.Container.Count; i++)
        {
            var obj = Instantiate(inventory.Container[i].item.prefab,transform);
            obj.GetComponent<RectTransform>().localPosition = GetPosition(i);
            obj.GetComponentInChildren<TextMeshProUGUI>().text = inventory.Container[i].amount.ToString("n0");
        }
    }

    public Vector3 GetPosition(int i)
    {
        return new Vector3(X_START + (X_SPACE_BETWEEN_ITEM * (i % NUMBER_OF_COLUMN)),Y_START + ((-Y_SPACE_BETWEEN_ITEM * (i / NUMBER_OF_COLUMN))),0f);
    }
}

Player.cs

public class Player : MonoBehavIoUr
{
    ...

    public OpenCloseInventory openCloseInventory;
    public InventoryObject inventory;

    private void Awake()
    {
        openCloseInventory.inventory.SetActive(true);
        inventory.Load();
        openCloseInventory.inventory.SetActive(false);
    }
 
    ...

}

有人可以帮我吗?

解决方法

我发现了!无需添加插槽,只需检查是否已经有一个插槽,然后修改项数即可。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。