ImageButtons[0].sprite = ButtonsController[2];
остальной код не видно, так что давай погадаем:
либо ты где-то обнуляешь список кнопок и он является нулом в этой строке.
либо ты где-то пересоздаешь список и у тебя первым элементом стоит нул элемент (но это меньше вероятно. Скорее всего если бы ты пересоздавал список, то там было бы пусто и кидал бы ArrayBoundExc)