Четверг, 28 Марта 2024, 14:19

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Поля скриптов
Поля скриптов
Nordicus666Дата: Среда, 22 Марта 2017, 15:06 | Сообщение # 1
был не раз
Сейчас нет на сайте
При создании нового экземпляра скрипта и добавлении его в объект, нужно что бы поля созданного скрипта были такие же как и в другом (доступ есть, т.е. сама команда нужна, если такая есть, которая позволит присвоить все поля одного скрипта всем полям другого)
сразу уточню, что б не писали лишнего:
1) Script = script не сработает, ибо таким образом только ссылка передается, а я сразу после вышеописанного удаляю объект, в котором лежит скрипт, из которого надо взять поля
2) Добавить в объект поле скрипта не сработает, ибо AddComponent работает только с типами, т.е. я могу добавить только чистый, изначальный скрипт, какой он есть в ассетах.

Добавлено (22 марта 2017, 15:06)
---------------------------------------------
так же делать внутри скрипта метод (типа что бы все поля передаваемого экземпляра скрипта присваивались конечному) тоже не вариант, ибо создается у меня как экземпляр скрипта spell, но внутри переменной только его наследователи, следовательно писать для каждого наследственного скрипта данную функцию - маразм (а таких (хоть сейчас и не много) потом будет дофига)

VostruginДата: Среда, 22 Марта 2017, 15:39 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Смотрите в сторону рефлексии или deep cloning objects.



Nordicus666Дата: Среда, 22 Марта 2017, 17:05 | Сообщение # 3
был не раз
Сейчас нет на сайте
Нашел MemberwiseClone(), полностью подходит, но нету на Юнити, облоооом

Добавлено (22 марта 2017, 16:29)
---------------------------------------------
Все, разобрался, оказывается memberwiseclone просто нельзя использовать в совокупности с чужими скриптами, добавил в родительский метод, возвращающий поверхностную копию себя же, все вроде работает, огромное спасибо, даже не за решение, а за реально полезное знание)

Добавлено (22 марта 2017, 16:41)
---------------------------------------------
Хотя нет, не работает, он копирует только скрипт-родителя (хоть и написано почему то, что это дочерний скрипт (по типу)), но ни его методов, ни его полей (точнее они есть, но почему то равны нулю), еще идеи?

Добавлено (22 марта 2017, 17:05)
---------------------------------------------
Попытался через написание пустого виртуального метода в родителе и его переопределение в дочернем скрипте - не помогло, код такой:
родительский:
Public virtual Spell clone()
{
return null;
}
дочерний:
Public override Spell clone()
{
return this.memberwiseclone();
}

у дочернего сделать не-Spell не могу, ибо обращаться из скрипта который вообще производит все эти манипуляции я могу только так (ибо спеллов разных дофига, у каждого свой скрипт, их надо как то объединить, вот они и наследуются от Spell, через который я и работаю)

Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Поля скриптов
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг