Я пытаюсь отображать карты в Canvas программно из Script onClick. Я успешно перетасовал свои карты и сохранил их в массиве player1 и player2 (по 26 случайных карт каждому игроку). Я создал базовую зону игроков c для player1 и player2. Мой подход заключается в том, что, когда я нажимаю кнопку, карты распределяются в соответствующих зонах с изображениями, хранящимися в картах
Я новичок в Unity и не имею понятия рендерить изображения на Canvas. Я попытался с помощью GameObject Canvas создать игру. Google и вопрос StackOverflow, но я не решил свою проблему. Я храню свой полный проект на Dropbox LINK: https://www.dropbox.com/sh/ofx9m6kaljpiecz/AAC7q7ufgAK1jlPHOfsGJWkPa?dl=0. Изображение холста: https://www.dropbox.com/s/y118yboj9hx0i52/Screenshot%20%2833%29.png?dl=0
Вот мой основной файл HelloWord.cs
public class HelloWorld : MonoBehaviour
{
Sprite sprite;
List<string> player1 = new List<string>();
List<string> player2 = new List<string>();
public static string[] suits = new string[] { "spades", "hearts", "clubs", "diamonds" };
public static string[] values = new string[] { "ace", "2", "3", "4", "5", "6", "7", "8", "9", "10", "jack", "queen", "king" };
public List<string> deck;
Texture2D myTexture;
public void PlayCards()
{
deck = GenerateDeck();
Shuffle(deck);
}
public void distributeCard()
{
for (var x = 1; x <= 26; x++)
{
player1.Add(deck[x]);
foreach (var item in player1)
{
print("Player 1 Cards:" + item.ToString());
}
}
for (var y = 26; y <= 52; y++)
{
player2.Add(deck[y]);
foreach (var item in player2)
{
print("Player 2 Cards:" + item.ToString());
}
}
}
public void onClick()
{
PlayCards();
distributeCard();
}
public static List<string> GenerateDeck()
{
List<string> newDeck = new List<string>();
foreach(string s in suits)
{
foreach(string v in values)
{
newDeck.Add(v +"_of_" + s);
}
}
return newDeck;
}
void Shuffle<T>(List<T> list)
{
System.Random random = new System.Random();
int n = list.Count;
while (n > 1)
{
int k = random.Next(n);
n--;
T temp = list[k];
list[k] = list[n];
list[n] = temp;
}
}
}