Рандомное удаление из списка

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Рандомное удаление из списка

Сообщение Mir 17 сен 2018, 20:19

Добрый вечер!

Я рандомно вызываю методы при старте. Вопрос как их удалять. Я хочу чтоб они вызвались только один раз и больше не появлялись.
И вот с удалением чтото путаю. Я делал удаление в каждом методе. но тогда они все удалялись заранее. куда нужн вставлять это удаление?

Синтаксис:
Используется csharp
List<System.Action> actions = new List<System.Action>();
        void Start(){
               
       
                actions.Add (R1);
                actions.Add (R2);
                actions.Add (R3);
                actions.Add (R4);

                InvokeRepeating ("Loads", 0f, 5f);

                }

        void Loads(){  
                int r = Random.Range(0, 5);
                        actions[r]();
                        }

        public void R1(){
       
                Instantiate (obj1, new Vector3 (0, 10, 0), Quaternion.identity, Canvas1.transform);

        }
        public void R2(){
        Instantiate (obj2, new Vector3 (0, 10, 0), Quaternion.identity, Canvas1.transform);
                //actions.RemoveAt (1); //вот здесь делаю удаление , но не работает
        }
        public void R3(){

                Instantiate (obj3, new Vector3 (0, 10, 0), Quaternion.identity, Canvas1.transform);
                //actions.RemoveAt (2);
        }

        }
 
Mir
UNIт
 
Сообщения: 82
Зарегистрирован: 18 июн 2016, 19:44

Re: Рандомное удаление из списка

Сообщение 1max1 17 сен 2018, 21:18

Не по индексу а по методу удаляй actions.Remove(R2);
И кстати int r = Random.Range(0, 5); замени int r = Random.Range(0, actions.Count); дабы не вылетало из границ.
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Рандомное удаление из списка

Сообщение Anonymyx 17 сен 2018, 21:25

А зачем делать разные методы которые отличаются одной переменной?

И кстати int r = Random.Range(0, 5); замени int r = Random.Range(0, actions.Count); дабы не вылетало из границ.

Это не спасет. При пустом листе рандом будет возвращать 0, а по нулевому индексу ничего не будет.
Аватара пользователя
Anonymyx
Адепт
 
Сообщения: 1973
Зарегистрирован: 05 апр 2015, 15:55

Re: Рандомное удаление из списка

Сообщение 1max1 17 сен 2018, 21:42

Это не спасет. При пустом листе рандом будет возвращать 0, а по нулевому индексу ничего не будет.

Думаю тс догадается добавить один if блок на этот случай...
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Рандомное удаление из списка

Сообщение Mir 18 сен 2018, 18:31

[quote="Anonymyx"]А зачем делать разные методы которые отличаются одной переменной?

это для примера, так разные все методы
Mir
UNIт
 
Сообщения: 82
Зарегистрирован: 18 июн 2016, 19:44

Re: Рандомное удаление из списка

Сообщение Mir 18 сен 2018, 18:38

1max1 писал(а):Не по индексу а по методу удаляй actions.Remove(R2);
И кстати int r = Random.Range(0, 5); замени int r = Random.Range(0, actions.Count); дабы не вылетало из границ.



спасибо)
Mir
UNIт
 
Сообщения: 82
Зарегистрирован: 18 июн 2016, 19:44


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 28