Я сериализую их и десериализую. И когда я их десериализую, я создаю экземпляры динамически с помощью Activator.CreateInstance(Type, Object[]);, пример:
Синтаксис:
Используется csharp
public void OnAfterDeserialize() {
Vector2 dropPosition = new Vector2(10, 10);
Control child = (Control)Activator.CreateInstance(typeof(Button), dropPosition);
child.Name = child.InitName;
TestRectOffset = new RectOffset(0, 0, 0, 0);
}
Vector2 dropPosition = new Vector2(10, 10);
Control child = (Control)Activator.CreateInstance(typeof(Button), dropPosition);
child.Name = child.InitName;
TestRectOffset = new RectOffset(0, 0, 0, 0);
}
Но, к сожалению, в этом случае Юнити выдает мне ошибку, что для заполнения значения RectOffset нужно использовать метод OnEnable():
> set_left is not allowed to be called during serialization, call it
> from OnEnable instead.
> See "Script Serialization" page in the Unity Manual for further details. UnityEngine.RectOffset:.ctor(Int32, Int32, Int32, Int32)
Конечно же у меня нет такого метода, ибо не наследуются от соответствующих классов и архитектурно не планирую. В будущем я планирую добавить еще много свойств, которые наверняка будут тоже могут выдавать такую же ошибку.
Что мне нужно сделать, чтобы сэмулировать метод OnEnable? Как можно корректно инстанциировать объект с помощью Activator.CreateInstance без этих ошибок?
-----------------------------------------
P.S. Я использую Unity 5.6.0p4