Good day friends tell me the solution. I want to make a game in the likeness of Mortal Kombat and make icons of the characters on the buttons. There is prefab button which is created on Canvas - >Panel (hanging script №1) depending on how many Models(characters) in the game script №1 Code (CSharp): using UnityEngine.UI; using UnityEngine; using System.Collections.Generic; public class ShowModelUIScript : MonoBehaviour { [SerializeField] private ShowModelButton buttonPrefab;//кнопка public Sprite[] ImgList; //динамический список картинов void Start() { var models = FindObjectOfType<SwitchPerson>().GetModels(); foreach (var model in models) { CreateButtonForModel(model); } } //выдать кнопки выбора на панели изходя от SwitchPerson сколько их чего и как public void CreateButtonForModel(Transform model) { var button = Instantiate(buttonPrefab); button.transform.SetParent(this.transform);//сделать его в иерархии подчиненным родитель-(он) сын button.transform.localScale = Vector3.one; //размер растянуть button.transform.localRotation = Quaternion.identity; //переменная для доступа к картинке // SpriteRenderer Sprite; //доступ к компоненту // Sprite = GetComponent<SpriteRenderer>(); var textbutton= buttonPrefab.GetComponentInChildren<Text>(); Sprite image; //при обновлении экрана задаем картинку по номеру из списка for (int i = 0; i < ImgList.Length; i++) { image=ImgList[i]; buttonPrefab.GetComponent<Image>().sprite = image; // buttonPrefab.GetComponent<Image>().sprite = Sprite.sprite; //загрузка в спрайт картиинки // button.Initialize(model, controller.EnableModel); // button.GetComponent<Image>().sprite = Sprite.sprite; } // button.Initialize(model, FindObjectOfType<SwitchPerson>().EnableModel); var controller = FindObjectOfType<SwitchPerson>(); button.Initialize(model, controller.EnableModel); //button.GetComponent<Image>().sprite = Sprite.sprite; } } The initialization script button on prepare button ShowModelButton Script No. 2 Code (CSharp): using UnityEngine; using UnityEngine.UI; using System; public class ShowModelButton : MonoBehaviour { private Transform objectToShow; private Action<Transform> clickAction; public void Initialize(Transform objectToShow,Action<Transform>clickAction) { this.objectToShow = objectToShow; this.clickAction = clickAction; GetComponentInChildren<Text>().text = objectToShow.gameObject.name; //получить имя модели чтобы показывала на кнопке } void Start() { GetComponent<Button>().onClick.AddListener(HandleButtonClick); } public void HandleButtonClick() { clickAction(objectToShow); } } The problem is that when the launch takes place, the button in Image Source Image = records the last picture of Sprite from the array ImgList [] script №1 On the attachments you can see what I'm doing wrong and how to fix it????