Задать вопрос
@Daniil2310

Проблема с PlayerPrefs?

Здраствуйте, я делал сохранение инвентаря и я столкнулся с такой проблемой, что при выбрасывание предмета, почему-то, проходит сохранение и предмет после выбрасывания переходит на соседний свободный слот.
Вот код :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class sobiraenpredmetu : MonoBehaviour
{
    private inventoryipob inventoey;
    public GameObject slotButton;
    public int id;



    private void Start()
    {
        inventoey = GameObject.FindGameObjectWithTag("Player").GetComponent<inventoryipob>();

        if (PlayerPrefs.HasKey("slots"))
        {
            for (int i = 0; i < inventoey.slots.Length; i++)
            {
                if (PlayerPrefs.GetInt($"сохраняем слот{i}") == i)
                {
                    
                    if (inventoey.idfull[i] == false)
                    {

                        if (id == PlayerPrefs.GetInt($"slots{id}"))
                        {
                            Instantiate(slotButton, inventoey.slots[i].transform);

                            
                            inventoey.idfull[i] = true;
                            break;
                        }
                    }
                    
                }

            }
        }


    }
    private void OnTriggerEnter2D(Collider2D other)
    {
        if (other.CompareTag("Player"))
        {

            for (int i = 0; i < inventoey.slots.Length; i++)
            {
                if (inventoey.idfull[i] == false)
                {
                    inventoey.idfull[i] = true;
                    Instantiate(slotButton, inventoey.slots[i].transform);
                    Destroy(gameObject);
                    PlayerPrefs.SetInt($"slots{id}", id);
                    PlayerPrefs.SetInt($"сохраняем слот{i}", i);
                    Debug.Log(PlayerPrefs.GetInt($"slots{id}", id) + " = id");
                    Debug.Log(PlayerPrefs.GetInt($"сохраняем слот{i}", i) + " = i");
                    break;
                }

            }
        }
    }
    
}

Я не понимаю почему так и прошу вас объяснит в чем дела, желательно подробно так как в теме сохранений новичок.

Изменено :
Скрипт 1 :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class vubros : MonoBehaviour
{
    
    public GameObject item;
    private Transform player;
    
    private void Start()
    {
        player = GameObject.FindGameObjectWithTag("Player").transform;
        
    }
    public void spawnDropedItem()
    {
        Vector3 playerPos = new Vector3(player.position.x + 3, player.position.y + 1,9);
        Instantiate(item, playerPos, Quaternion.identity);
    }

}

Скрипт 2 :
using System.Collections.Generic;
using UnityEngine;

public class slots : MonoBehaviour
{
    private inventoryipob inventoey;
    
    public int i;

    private void Start()
    {
        inventoey = GameObject.FindGameObjectWithTag("Player").GetComponent<inventoryipob>();
    }
    private void Update()
    {
        if(transform.childCount <= 0)
        {
            inventoey.idfull[i] = false;
        }

    }
    public void DropItem()
    {
        foreach(Transform child in transform)
        {
            child.GetComponent<vubros>().spawnDropedItem();
            GameObject.Destroy(child.gameObject);
        }
    }

}
using System.Collections;
  • Вопрос задан
  • 44 просмотра
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы