


Программирование
+2Ошибка error CS0029: Cannot implicitly convert type 'UnityEngine.Sprite[]' to 'UnityEngine.Sprite'
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Random = System.Random;
using UnityEngine.UI;
public class Flags : MonoBehaviour
{
public string[,] flags = { { "Россия", "Img_05_0001" }, { "Германия", "Img_05_0002" }, { "Япония", "Img_05_0003" }, { "Китай", "Img_05_0004" }, { "Франция", "Img_05_0005" }, {"США", "Img_05_0006" }, {"Италия", "Img_05_0007"}, {"Великобритания", "Img_05_0008"}, };
public string Country1;
public string Country2;
public string Country3;
public string Country4;
public Text ScoreDisplay1;
public Text ScoreDisplay2;
public Text ScoreDisplay3;
public Text ScoreDisplay4;
public int CountryFound1;
public int CountryFound2;
public int CountryFound3;
public int CountryFound4;
public int trueNumber;
public string trueFlag;
public string trueFlagName;
public string ButtonName;
public int Score;
public int Mistake = 5;
public SpriteRenderer spriteRenderer;
void Start()
{
Game();
}
void Update()
{
ScoreDisplay1.text = Country1;
ScoreDisplay2.text = Country2;
ScoreDisplay3.text = Country3;
ScoreDisplay4.text = Country4;
}
void Game()
{
CountryFound1 = new Random().Next(0, 5);
CountryFound2 = new Random().Next(0, 5);
CountryFound3 = new Random().Next(0, 5);
CountryFound4 = new Random().Next(0, 5);
Country1 = flags[CountryFound1, 0];
Country2 = flags[CountryFound2, 0];
Country3 = flags[CountryFound3, 0];
Country4 = flags[CountryFound4, 0];
trueNumber = new Random().Next(1, 4);
if ( trueNumber == 1)
{
trueFlag = flags[CountryFound1, 1];
trueFlagName = Country1;
}
else if ( trueNumber == 2)
{
trueFlag = flags[CountryFound2, 1];
trueFlagName = Country2;
}
else if ( trueNumber == 3)
{
trueFlag = flags[CountryFound3, 1];
trueFlagName = Country3;
}
else if ( trueNumber == 4)
{
trueFlag = flags[CountryFound4, 1];
trueFlagName = Country4;
}
spriteRenderer.sprite = Resources.LoadAll<Sprite>(trueFlag);
}
public void click1()
{
ButtonName = Country1;
}
public void click2()
{
ButtonName = Country2;
}
public void click3()
{
ButtonName = Country3;
}
public void click4()
{
ButtonName = Country4;
}
public void Click()
{
if(trueFlagName == ButtonName)
{
Game();
Score += 1;
}
else
{
Game();
Mistake -= 1;
}
}
}
По дате
По рейтингу
Похоже, проблема тут:
1
spriteRenderer.sprite = Resources.LoadAll<Sprite>(trueFlag);
LoadAll означает "загрузить все". Его название подразумевает, что результат метода может содержать несколько ресурсов (массив, в вашем случае - массив спрайтов).
А поле spriteRenderer.sprite может содержать только один спрайт.
Если вам нужен первый загруженный спрайт, тогда возьмите из массива нулевой элемент:
1
spriteRenderer.sprite = Resources.LoadAll<Sprite>(trueFlag)[0];