Unity 3D: создание экземпляра объекта после помещения его в список несовместимоC#

Место общения программистов C#
Ответить
Anonymous
 Unity 3D: создание экземпляра объекта после помещения его в список несовместимо

Сообщение Anonymous »

Я делаю игру, в которой люди ловят кошек, а затем отпускают их в безопасное место.
Вот весь соответствующий код:

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»