Есть несколько способов решить вашу проблему.
1) Синглтон-классы .Объявите статический экземпляр вашего класса, в котором хранится массив спрайтов, т.е. класс uIManager.Вы можете сделать свой класс синглтоном, используя метод, показанный в ссылке, или вы можете просто объявить так:
public class UIManager : MonoBehaviour {
UIManager static instance;
void Start() {
instance = this;
}
}
Хорошая часть - вы можете напрямую ссылаться на свой класс как UIManager.instance и получить все открытые переменные внутри класса.Недостатком является то, что если у вас есть несколько сценариев в одной сцене, это будет относиться только к одному экземпляру, и вы не сможете получить доступ к другим экземплярам сценария, которые присутствуют в сцене.Таким образом, этот метод может использоваться только для одного экземпляра на сцену.
2) Сохранение ссылки на нужный вам скрипт в Unity Editor и назначение его общедоступной переменной в скрипте .Предположим, у вас есть класс A, который выполняет некоторые вычисления, и у вас есть класс B, в котором хранятся некоторые данные;давайте предположим, что его скрипт массива Sprite для вашего скриптаТеперь в классе A вам необходим этот спрайтовый массив для присваивания.Итак, вы можете объявить открытую переменную класса B, т.е. public ClassB classBInstance;
.И вы сможете увидеть пустой экземпляр поля ClassB в редакторе единиц.Вы можете напрямую назначить требуемую ссылку и вуаля, вы сможете получить доступ к переменным вашего класса B.
3) Используйте API-интерфейс unity, чтобы найти игровой объект, к которому присоединен ваш класс.Вот некоторые из API, которые я регулярно использую, помимо двух методов:
4) Настройка массива как статического, но еслиесли вы сделаете это, то не сможете получить к нему доступ в редакторе единиц и, следовательно, не сможете назначить спрайты в редакторе.
По вашему вопросу, я полагаю, что первый метод должен более, чем выполнять трюк.