Как изменить List<> из другого скрипта?

182
06 апреля 2022, 13:30

В Script1 имеется список cubeList, который постоянно добавляет в себя объекты (например, по 1 кубу в секунду).

Как можно изменить список из другого скрипта Script2?

(Из того, что нашел - доступ к статичным переменным или просто копирование этого списка, без дальнейшего изменения. Так же есть способ изменения "простых" переменных, содержащих в себе лишь одно значение. Видимо, плохо искал, конечно.)

Вот пример используемого скрипта.

// Script1 подключен к объекту CubeSpawner 
public class Script1 : MonoBehaviour {
public List<GameObject> cubeList = new List <GameObject>();
//... идёт заполнение списка
}
public class Script2 : MonoBehaviour {
public CubeSpawn cLCopy;
void FixedUpdate () {
        cLCopy = GameObject.Find("CubeSpawner").GetComponent<Script1>(); 
        List<GameObject> cubeListCopy = cLCopy.cubeList; 
// далее используется, например:
// if (cubeListCopy.Count != 0) 
//     { Destroy(cubeListCopy[0]);}
}

Выводится ошибка:

NullReferenceException: Object reference not set to an instance of an object Script2.FixedUpdate () (at Assets/Script2.cs:48)

48   List<GameObject> cubeListCopy = cLCopy.cubeList;
Answer 1
  1. сделать список статичным

public static List cubeList;

  1. после этого доступ к элементам списка через точку

    Script1.cubeList

READ ALSO
(C#, Unity)Как заблокировать управление?

(C#, Unity)Как заблокировать управление?

Вот у меня есть код(Без смеха):

243
Создание Control в рамках паттерна MVVM

Создание Control в рамках паттерна MVVM

Доброго времени суток!

86
Нумерация слайдов в slick slider

Нумерация слайдов в slick slider

У меня есть слайдер написанный на slick slider(там есть клавиши переключения, но речь не о них)У меня в макете есть цифры переключения слайдера(картинка...

70