Помогите пожалуйста решить проблему, Пишу обычный скрипт На юнити, И тут вылезает ошибка cs0246.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
private Inventory Inventory;
public GameObject slotButton;
public int id;
private void Start()
{
inventory = GameObject.FindGameObjectWithTag("Player").GetComponent<inventory>();
}
private void OnTriggerEnter2D(Vollider2D other)
{
if (other.CompareTag("Player"))
{
for (int i = 0; i < inventory.slots.Length; i++)
{
if (inventory.isFull[i] == false)
{
inventory.isFull[i] = true;
Instantiate(slotButton, inventory.slots[i].transform);
Destroy(GameObject);
break;
}
}
}
}
}
Ошибка возникает потому, что переменная Inventory объявлена с заглавной буквы (private Inventory Inventory), однако далее в коде используется строчная буква (inventory) — компилятор воспринимает это как разные имена.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
// Используйте одну согласованную форму имени переменной
private Inventory inventory;
public GameObject slotButton;
public int id;
private void Start()
{
// Теперь правильно используем имя переменной
inventory = GameObject.FindGameObjectWithTag("Player").GetComponent<Inventory>();
}
private void OnTriggerEnter2D(Collider2D other)
{
if (other.CompareTag("Player"))
{
for (int i = 0; i < inventory.slots.Length; i++)
{
if (!inventory.isFull[i])
{
inventory.isFull[i] = true;
// Правильно используйте слот кнопки и объект инвентаря
Instantiate(slotButton, inventory.slots[i].transform.position, Quaternion.identity);
// Уничтожаем сам игровой объект с триггером (этот скрипт), а не произвольный объект!
Destroy(gameObject); // Не пишите просто Destroy(GameObject)
break;
}
}
}
}
}