Создание однотипных объектов в 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() нужно еще вызывать при создании карты.
