Создание однотипных объектов в Unity

Имеется объект на канвасе с вложенным в него текстовыми полями, кнопкой и картинкой:

введите сюда описание изображения

Таких объектов может быть много, но с различной информацией и картинками.

Вопрос: Как динамически через скрипт создавать такие объекты друг под другом с возможностью редактирования содержимого?


Ответы (2 шт):

Автор решения: AC Studio

Чтобы менять компоненты добавлять и удалять нужно:

    void Start()
    {
        StartCoroutine(Test());
        
    }

    IEnumerator Test()
    {
        yield return new WaitForSeconds(2);

        var test = new GameObject();
        //Добавляем скрипт или компонент
        test.AddComponent<BoxCollider>();

        yield return new WaitForSeconds(2);
        //Удаляем скрипт или компонент
        DestroyImmediate(test.GetComponent<BoxCollider>());

        yield return new WaitForSeconds(5);
        //Чисто повтор.
        StartCoroutine(Test());
    }

P.S: я просто дополню комментарий.

→ Ссылка
Автор решения: Максим Фисман

Да, пока я писал, уже догадался, что через GetComponent GetChild - нет, пожалуйста, не через GetChild. Это дорого!

Вы пишите скрипт для этой вашей карточки примерно такой:

public class EmployeeCard () {
    // В инспекторе укажите соответствующие объекты на эти переменные:
    [SerializedField] private Text Name_obj;
    [SerializedField] private Text Salary_obj;
    [SerializedField] private Text Experience_obj;
    [SerializedField] private Text Age_obj;
    [SerializedField] private SpriteRenderer Photo_obj;


    private string Name;
    private int Salary;
    private int Experience; // Может не int, а что-то другое
    private int Age;
    private Sprite Photo;

    public EmployeeCard (string Name, int Salary, int Experience, int Age, Sprite Photo) {
    this.Name = Name;
    this.Salary = Salary;
    this.Experience = Experience;
    this.Age = Age;
    this.Photo = Photo;

    updateCard();
    }

    private void updateCard () {
        Name_obj.text = Name;
        Salary_obj.text = "Зарплата: " + Salary;            
        Experience_obj.text = "Опыт работы: " + Experience + " лет";
        Age_obj.text = "Возраст: " + Age + " лет";
        Photo_obj.sprite = Photo;
    }
}

Так соответственно делаете столько полей, сколько вам нужно. UpdateCard() нужно еще вызывать при создании карты.

→ Ссылка