- changed status to open
OnAfterDeserialize () is called, but the member asset reference is not deserialized.
Issue #219
open
Hi, I want to operate the referenced object after deserialized, but it is not deserialized until I click the referenced asset file in unity editor. I created two asset files A and B, A references B. If I click A first, A's Parent will be null after deserialization. If I click B then A, the A's Parent will not be null after deserialization.
[CreateAssetMenu]
public class DomObject : SerializedScriptableObject
{
[OnValueChanged(nameof(ParentChanged))]
[AssetsOnly]
// prevent cyclic dependencies
public DomObject Parent;
private void ParentChanged()
{
// Parent is null
Health.Parent = Parent?.Health;
}
[OnDeserialized]
private void OnDeserialized()
{
//
ParentChanged();
}
/// <summary>Not yet documented.</summary>
protected override void OnAfterDeserialize()
{
ParentChanged();
}
[OdinSerialize]
public ObjectValue<int> Health;
}
Comments (2)
-
-
reporter Ok, plz clone this repository https://wavebit@bitbucket.org/wavebit/evaluateodin.git
- Log in to comment
I'm afraid you'll need to explain a bit more about the context, or provide a fuller example that we can actually put in a project and play around with, before we can help you with this. For example, how exactly does the ObjectValue<T> class work? It seems to be important somehow, but this example doesn't include it, so we can't test anything.
Can you provide exact example code and reproduction steps that showase the issue you're having?