У меня есть система инвентаризации, и когда я взял элемент, в который он попал, но я не уверен, что я изменил, потому что элемент больше не подбирается. Я пытаюсь все, что могу, но теперь единственный раз, когда я могу добавить элемент в свой инвентарь, - это функция запуска, где она была инициализирована.Подбор предметов в Unity
Вот код прилагается к плееру
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class BasePlayer : MonoBehaviour {
private List<BaseStat> _playerStats = new List<BaseStat>();
private List<BaseItem> _playerInventory = new List<BaseItem>();
void Start() {
BaseItem _item = new BaseItem();
BaseItem _weapon = new BaseItem();
_weapon.ItemType = BaseItem.ItemTypes.WEAPON;
BaseItem _potion = new BaseItem();
_potion.WeaponType = BaseItem.WeaponTypes.BOW;
_potion.ItemType = BaseItem.ItemTypes.POTION;
_playerInventory.Add (_item);
_playerInventory.Add (_weapon);
_playerInventory.Add (_potion);
}
public List<BaseItem> ReturnPlayerInventory() {
return _playerInventory;
}
}
Вот код прилагается к пункту
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class Avalon : MonoBehaviour {
private List<BaseItem> playerInventory = new List<BaseItem>();
public GameObject Sword;
void Start() {
BasePlayer basePlayerScript = GameObject.FindGameObjectWithTag ("Player").GetComponent<BasePlayer>();
playerInventory = basePlayerScript.ReturnPlayerInventory();
}
void OnTriggerEnter2D(Collider2D col) {
if (col.CompareTag ("Player")) {
GreatSwordAvalon();
Destroy (Sword.gameObject);
}
}
public void GreatSwordAvalon() {
BaseItem _avalon = new BaseItem();
_avalon.ItemName = "GreatSword of Avalon";
_avalon.ItemDescription = "Strongest sword in the game";
_avalon.ItemType = BaseItem.ItemTypes.WEAPON;
_avalon.ItemValue = 999999;
_avalon.ItemStats.Add (new BaseStrength());
_avalon.WeaponType = BaseItem.WeaponTypes.SWORD;
playerInventory.Add (_avalon);
}
}
Любая помощь очень ценится
Вы пытались отложить отладку, чтобы узнать, идет ли речь о вашей функции GreatSwordAvalon? Входит ли он в if (col.comparetag («Player»))? Попытайтесь выяснить, где он не работал, как ожидалось. – Matriac
@Matriac Я попробовал, что на GreatSwordAvalon и OnTriggerEnter2D функция вызывается. Я даже попытался сделать GetKeyDown, чтобы увидеть, работает ли это, и он вызван, но не добавляет в инвентарь. По какой-то причине он добавляет только через функцию запуска. – a7x963
Вы уверены, что ваша переменная _playerInventory не равна нулю? После добавления меча, вы видели в нем новый предмет? Возможно, проблема связана с правильным списком, и вы получаете только копию по какой-то причине – Matriac