Как добавить изображение к тексту, которое будет отображаться случайным образом - PullRequest
0 голосов
/ 02 мая 2019

Как это выглядит в единстве.Я также нарисовал красную стрелку, чтобы показать, что я пытаюсь переместить

Я пытаюсь создать игру-викторину, которая показала бы случайное слово с соответствующим изображением.Я могу показать случайный вопрос и случайное изображение одновременно.Моя проблема в том, что изображение, которое будет отображаться, не всегда будет правильным изображением для слова.Можно ли переместить случайное изображение вверх и поместить его со случайным текстом?

Я попытался прикрепить изображение непосредственно к тексту, и проблема в том, что текст исчезнет и останется только изображение.Что я сделал, чтобы вставить изображение в игровой объект, повторив все для текста.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Linq;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour
{
    public Question[] questions;
    public Image[] images;

    private static List<Question> unansweredQuestions;
    private static List<Image> unansweredImages;

    private Question currentQuestion;
    private Image currentImage;

    [SerializeField]
    private Text factText;
    [SerializeField]
    private Image factImage;

    [SerializeField]
    private Text trueAnswerText;
    [SerializeField]
    private Image trueAnswerImage;

    [SerializeField]
    private Text falseAnswerText;
    [SerializeField]
    private Image falseAnswerImage;

    [SerializeField]
    private Animator animator;

    [SerializeField]
    private float timeBetweenQuestions = 1f;
    [SerializeField]
    private float timeBetweenImages = 1f;

    void Start()
    {
        if (unansweredQuestions == null || unansweredQuestions.Count == 0)
        {
            unansweredQuestions = questions.ToList<Question>();
        }

        if (unansweredImages == null || unansweredImages.Count == 0)
        {
            unansweredImages = images.ToList<Image>();
        }

        SetCurrentQuestion();
    }

    void SetCurrentQuestion()
    {
        int randomQuestionIndex = Random.Range(0, unansweredQuestions.Count);
        currentQuestion = unansweredQuestions[randomQuestionIndex];

        int randomImageIndex = Random.Range(0, unansweredQuestions.Count);
        currentImage = unansweredImages[randomImageIndex];

        factText.text = currentQuestion.fact;

        if (currentQuestion.isTrue)
        {
            trueAnswerText.text = "CORRECT";
            falseAnswerText.text = "WRONG";
        }
        else
        {
            trueAnswerText.text = "WRONG";
            falseAnswerText.text = "CORRECT";
        }

    }

    IEnumerator TransitionToNextQuestion()
    {
        unansweredQuestions.Remove(currentQuestion);

        yield return new WaitForSeconds(timeBetweenQuestions);

        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);

        unansweredImages.Remove(currentImage);

        yield return new WaitForSeconds(timeBetweenQuestions);

        SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
    }

Я ожидаю, что изображение и правильный текст будут случайно отображаться вместе.

1 Ответ

0 голосов
/ 02 мая 2019

Основываясь на небольшой информации, я думаю, что вы пытаетесь задать случайный вопрос, но с правильным изображением.

Если это так: проблема, которую я вижу, заключается в том, что вы используете список для доступа к Вопросам и изображениям.Вы можете использовать словари для решения проблемы.

public Question[] questions;
public Image[] images;

Новое:

Dictionary< int, Question> Questions;
Dictionary< int, Image> Images;

Целое число здесь будет случайным индексом, который будет одинаковым для обоих словарей.

Вы можете вручную задать вопросы и изображения во время выполнения.затем, когда вы хотите назначить изображение этому случайному тексту, просто получите случайное число, используя функцию Random.Range.он вернет целое число, которое можно использовать в качестве индекса.Дайте мне знать, если это поможет.

PS: Вы можете удалить пробел перед типом данных int.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...