Предотвратить код от отображения того же изображения в случайной последовательности? - PullRequest
0 голосов
/ 17 мая 2018

Я сделал скрипт, который отображает случайное изображение из списка каждые X секунд, но иногда оно показывает одно и то же изображение в течение часов игрового процесса.Мне было интересно, как бы я сделал так, чтобы он не показывал изображение, которое уже было показано во время текущей игровой сессии.Вот мой код:

void Start () {

        // start count
        StartCoroutine(RandomReportEvent());

}

xx

IEnumerator RandomReportEvent(){


        float wait_time = Random.Range (53.5F, 361.2f); // removed 1879.2f

        // test purposes
        // float wait_time = Random.Range (1.7F, 3.2f);

        yield return new WaitForSeconds(wait_time);
        memeWindow.SetActive (true);

        // get random reports number within range
        float ReportValue = Random.Range (1.2F, 57.8F);

        // round to 2 dp
        ReportValue = Mathf.Round(ReportValue * 100f) / 100f;
        // show random report value in Text
        randomReportValue.text = string.Format ("<color=#FF8400FF>{0}K</color>", ReportValue);

        // Show Random Image from list
        showRandomImage();
    }

xx

void showRandomImage(){

        // count the amount of images 
        int count = memeImg.Count;

        // randomly select any image from 0 to count number
        int index = Random.Range(0, count);

        // assing an image from our list
        sr.sprite = memeImg[index];


    }

Любая помощь будет оценена!

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Как насчет создания списка изображений, которые у вас есть, затем выберите случайное изображение с вашим int index = Random.Range(0, count); из этого списка, после чего вы удалите этот элемент из списка с помощью yourImagesList.RemoveAt(index);, поэтому на следующих итерациях изображение не будет будет доступно. Вы можете обновить значение int count = memeImg.Count; с List<T>.Count после удаления изображения из списка. Источники: https://msdn.microsoft.com/en-us/library/5cw9x18z(v=vs.110).aspx а также https://msdn.microsoft.com/en-us/library/27b47ht3(v=vs.110).aspx

0 голосов
/ 17 мая 2018

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

Вы можете найти хороший способ перемешать список или массив в этом ответе.

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