Вот весь соответствующий код:
Код: Выделить всё
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEditor;
using UnityEngine;
using UnityEngine.UI;
public class PlayerCatching : MonoBehaviour
{
public Text playerScore;
private int playerScoreInt;
public Text catHoldCount;
public List cats;
GameObject tempGameObject;
private int catCount;
private void Start()
{
playerScoreInt = 0;
cats = new List();
playerScore.text = playerScoreInt.ToString();
tempGameObject = null;
catCount = 0;
}
private void Update()
{
playerScore.text = playerScoreInt.ToString();
catHoldCount.text = catCount.ToString();
if (catCount < 0)
{
catCount = 0;
}
if (Input.GetKeyDown(KeyCode.F))
{
if (catCount >= 1)
{
GameObject releaseCat = cats[cats.Count - 1];
Vector3 catReleasePosition = new Vector3(transform.position.x, transform.position.y + 1, transform.position.z);
GameObject newObject = Instantiate(releaseCat, catReleasePosition, transform.rotation);
newObject.SetActive(true);
catCount--;
Destroy(cats[cats.Count - 1]);
cats.RemoveAt(cats.Count - 1);
}
}
}
private void OnTriggerStay(Collider other)
{
if (Input.GetKey(KeyCode.E) && other.gameObject.CompareTag("Cat") && (catCount < 3))
{
playerScoreInt++;
tempGameObject = Instantiate(other.gameObject);
tempGameObject.SetActive(false);
cats.Add(tempGameObject);
catCount++;
Destroy(other.gameObject);
}
//Debug.Log("Collided with " + other.ToString());
}
}
Мне удалось получить основную механику получения кота и (в некоторой степени) его освобождения. Однако, когда объект игрока выпускает кошек, он иногда их не освобождает (примечание: я проверил инспектор, они создают экземпляры и становятся активными). Например, я беру 3 кота (работает каждый раз), затем 3 раза нажимаю "F", чтобы отпустить 3 кота, но иногда отпускают только 2. Другой пример: если я нажму F 3 раза, но нажму их с некоторой задержкой друг за другом, все 3 попытки освобождения будут успешными, но если я нажму F 3 раза очень быстро, 1 или 2 кошки не отпустят.
Надеюсь, кто-нибудь подскажет мне, происходят ли какие-то странные махинации с Unity.
Я также уверен, что не удалю кошек преждевременно, когда выпущу их. .
Подробнее здесь: https://stackoverflow.com/questions/787 ... consistent
Мобильная версия