Assembly.Load works for monobehaviours, but if there is a class field on the monobehaviour it will not show in inspector.

I am loading a dll from an AssetBundle. Inside the dll are two monobehaviours. The first one contains just regular data and code but no custom class fields. This class loads and works correctly. The second class in the monobehaviour has custom class fields which contain some further builtin class fields like strings, ints, ect…, however this class doesn’t load correctly. All the custom class fields in this monobehaviour are not visible and I’m guessing null? The data that is directly in the monobehaviour is there though.

It’s worth mentioning that the custom classes I have in this monobehaviour are also in the same dll that the monobehaviours are in. Also the DLL is loaded through Assembly.Load( ByteArray ); The byte array comes from the TextAsset.bytes.

So It seems like monobehaviours work fine from a dll in unity but don’t support fields of regular custom classes inside that monobehaviour. Is this true? Can I fix it somehow?

[Serializable]
public class SomeBehaviour : Monobehaviour
{
// this doesn't show up
public MyCustomtype = new MyCustomType();

// these show up
public string someString;
public int count;
ect...
}

[Serializable]
public class MyCustomType
{
// these don't show
public string myData;
public int myIntData;
}

Your custom class type doesn’t seem to have the System.Serializable attribute. Without that a custom class can’t be serialized by Unity’s serialization system and therefore won’t show up in the inspector. Also the custom class should have public access.