Страница 1 из 1

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

СообщениеДобавлено: 17 сен 2018, 20:19
Mir
Добрый вечер!

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

Синтаксис:
Используется 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);
        }

        }
 

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

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

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

СообщениеДобавлено: 17 сен 2018, 21:25
Anonymyx
А зачем делать разные методы которые отличаются одной переменной?

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

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

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

СообщениеДобавлено: 17 сен 2018, 21:42
1max1
Это не спасет. При пустом листе рандом будет возвращать 0, а по нулевому индексу ничего не будет.

Думаю тс догадается добавить один if блок на этот случай...

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

СообщениеДобавлено: 18 сен 2018, 18:31
Mir
[quote="Anonymyx"]А зачем делать разные методы которые отличаются одной переменной?

это для примера, так разные все методы

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

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



спасибо)