В Unity список обнуляется при вызове Update или других методов
Вот фулл код, в методе Start Debug.Log(diamonds.Count); выводит 1, но в других методах эта же строка выводит 0. P.S. Комментариями обозначены нужные места
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.UI;
public class Main : MonoBehaviour
{
public List<string> allCards = new List<string>() {"c6", "c7", "c8", "c9", "c10", "cj", "cq", "ck", "ca",
"d6", "d7", "d8", "d9", "d10", "dj", "dq", "dk", "da",
"h6", "h7", "h8", "h9", "h10", "hj", "hq", "hk", "ha",
"s6", "s7", "s8", "s9", "s10", "sj", "sq", "sk", "sa"};
[SerializeField] public List<string> playerCards;
[SerializeField] public List<string> bot1cards;
[SerializeField] public List<string> bot2cards;
private SpriteRenderer spriteRenderer;
[SerializeField] public List<GameObject> playerCardsObjects;
[SerializeField] public List<GameObject> bot1CardsObjects;
[SerializeField] public List<GameObject> bot2CardsObjects;
public List<string> clubs;
public List<string> diamonds; //Тот самый список
public List<string> hearts;
public List<string> spears;
float offset = 1.4f;
float startX = -7.7f;
float startY = -3.7f;
public GameObject card;
public GameObject card2;
public Canvas canvas;
public List<Sprite> sprites = new List<Sprite>();
public List<Sprite> images = new List<Sprite>();
float offset2 = 0.5f;
float X1 = -8.1f;
float Y1 = 4.0f;
float X2 = 8.2f;
float Y2 = 4.0f;
int turn;
float offset3 = 0.5f;
float cX1 = 0f;
float cY1 = 4f;
float dX1 = 0f;
float dY1 = 2.3f;
float hX1 = 0f;
float hY1 = 0.6f;
float sX1 = 0f;
float sY1 = -1.1f;
float cX2 = -0.5f;
float cY2 = 4f;
float dX2 = -0.5f;
float dY2 = 2.3f;
float hX2 = -0.5f;
float hY2 = 0.6f;
float sX2 = -0.5f;
float sY2 = -1.1f;
private int frames = 0;
public string cardSelected = "";
void Start()
{
int i = 0;
while (i < 12) {
int index = UnityEngine.Random.Range(0, allCards.Count-1);
string rand = allCards[index];
if (playerCards.Contains(rand))
continue;
playerCards.Add(rand);
GameObject newCard = Instantiate(card2) as GameObject;
newCard.name = rand;
float posX = startX + i * offset;
float posY = startY;
newCard.transform.position = new Vector3(startX + i * offset, startY, 0);
newCard.transform.localScale -= new Vector3(0.99f, 0.92f, 0);
newCard.GetComponent<Image>().sprite = images[index];
newCard.transform.SetParent(canvas.transform);
playerCardsObjects.Add(newCard);
newCard.GetComponentInChildren<Text>().text = string.Empty;
i++;
}
i = 0;
while (i < 12) {
int index = UnityEngine.Random.Range(0, allCards.Count-1);
string rand = allCards[index];
if (playerCards.Contains(rand) || bot1cards.Contains(rand))
continue;
bot1cards.Add(rand);
GameObject newCard = Instantiate(card) as GameObject;
newCard.name = rand;
newCard.transform.position = new Vector3(X1, Y1 - i * offset2, 0);
newCard.transform.localScale = new Vector3(1.3f, 1.3f, 0);
newCard.GetComponent<SpriteRenderer>().sprite = sprites[36];
bot1CardsObjects.Add(newCard);
i++;
}
foreach (string rand in playerCards) {
allCards.Remove(rand);
}
foreach (string rand in bot1cards) {
allCards.Remove(rand);
}
i = 0;
while (i < 12) {
bot2cards = allCards;
GameObject newCard = Instantiate(card) as GameObject;
newCard.transform.position = new Vector3(X2, Y2 - i * offset2, 0);
newCard.transform.localScale = new Vector3(1.3f, 1.3f, 0);
newCard.GetComponent<SpriteRenderer>().sprite = sprites[36];
bot2CardsObjects.Add(newCard);
i++;
}
if (playerCards.Contains("d9"))
turn = 0;
else if (bot1cards.Contains("d9"))
turn = 1;
else
turn = 2;
if (turn == 0) {
Destroy(playerCardsObjects[playerCards.IndexOf("d9")]);
playerCards.Remove("d9");
}
else if (turn == 1) {
Destroy(bot1CardsObjects[bot1cards.IndexOf("d9")]);
bot1cards.Remove("d9");
}
else {
Destroy(bot2CardsObjects[bot2cards.IndexOf("d9")]);
bot2cards.Remove("d9");
}
diamonds.Add("d9"); //Добавление в него элемента
GameObject newCard_ = Instantiate(card) as GameObject;
newCard_.transform.position = new Vector3(dX1, dY1, 0);
newCard_.transform.localScale = new Vector3(1.3f, 1.3f, 0);
newCard_.GetComponent<SpriteRenderer>().sprite = sprites[12];
dX1 += offset3;
turn++;
}
public void OnMouseDown() {
string _name = this.name;
cardSelected = _name;
}
public void Update() {
frames++;
if (frames == 30) {
frames = 0;
if (turn == 3) {
turn = 0;
}
if (turn == 0) {
if (cardSelected != "") {
if (cardSelected == "c6") {
if (clubs.Contains("c7")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "c7") {
if (clubs.Contains("c8")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "c8") {
if (clubs.Contains("c9")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "c9") {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
if (cardSelected == "c10") {
if (clubs.Contains("c9")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "cj") {
if (clubs.Contains("c10")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "cq") {
if (clubs.Contains("cj")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "ck") {
if (clubs.Contains("cq")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "ca") {
if (clubs.Contains("ck")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "d6") {
if (diamonds.Contains("d7")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "d7") {
if (diamonds.Contains("d8")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "d8") {
Debug.Log(diamonds.Count);
if (diamonds.Contains("d9")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "d9") {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
if (cardSelected == "d10") {
Debug.Log(diamonds.Count);
if (diamonds.Contains("d9")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "dj") {
if (diamonds.Contains("d10")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "dq") {
if (diamonds.Contains("dj")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "dk") {
if (diamonds.Contains("dq")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "da") {
if (diamonds.Contains("dk")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "h6") {
if (hearts.Contains("h7")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "h7") {
if (hearts.Contains("h8")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "h8") {
if (hearts.Contains("h9")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "h9") {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
if (cardSelected == "h10") {
if (hearts.Contains("h9")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "hj") {
if (hearts.Contains("h10")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "hq") {
if (hearts.Contains("hj")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "hk") {
if (hearts.Contains("hq")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "ha") {
if (hearts.Contains("hk")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "s6") {
if (spears.Contains("s7")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "s7") {
if (spears.Contains("s8")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "s8") {
if (spears.Contains("s9")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "s9") {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
if (cardSelected == "s10") {
if (spears.Contains("s9")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "sj") {
if (spears.Contains("s10")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "sq") {
if (spears.Contains("sj")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "sk") {
if (spears.Contains("sq")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
if (cardSelected == "sa") {
if (spears.Contains("sk")) {
Destroy(playerCardsObjects[playerCards.IndexOf(cardSelected)]);
playerCards.Remove(cardSelected);
cardSelected = "";
turn++;
}
}
}
}
}
}
}