Найти в Дзене
Интернет сегодня

Unity2D: Как скопировать компонент с одного объекта на другой

Недавно, при разработке игры на Unity, у меня возникла проблема. У меня был объект с компонентом Sword и стояла задача предоставить игроку возможность сделать копию своего меча с теми же показателями (с полями компонента Sword), но с изменёнными другими компонентами.

Естественно, я решил скопировать значения всех полей из компонента Sword одного объекта в компонент Sword другого объекта. Сейчас я хочу показать как я это сделал.

Код
Код

Я создал этот статичный метод.

Обратите внимание на слово this перед аргументом comp, это слово значит, что теперь этот метод будет доступен для каждого экземпляра класса Component и его наследников. Метод довольно простой, мы просто проходимся по всем свойствам и полям одного объекта и задаёт такие же значения второму объекту

Теперь перейдём к использованию этого метода

Способ использования

obj.GetComponent<Sword>().GetCopyOf<Sword>(obj2.GetComponent<Sword>());

Вот такой синтаксис. Из obj2 мы копируем свойства компонента Sword в obj. Естественно вместо Sword вы напишете свои свойства.

Важно.

У обоих объектов обязательно должен быть указанный компонент, иначе копирование не сработает.

Если эта статья вам помогла, поддержите её лайком, пока!