Class SerializableMonoScript
Namespace: Aspid.FastTools.Types
Assembly: Aspid.FastTools.dll
Unity-serializable wrapper around a Type referencing it through its MonoScript
asset, so renaming or moving the class does not break the field.
[Serializable]
public class SerializableMonoScript : SerializableTypeBase, ISerializableType, ISerializationCallbackReceiver
Inheritance
object ← SerializableTypeBase ← SerializableMonoScript
Derived
Implements
ISerializableType, ISerializationCallbackReceiver
Extension Methods
TextInputBaseFieldTextSelectionExtensions.AddOnCursorIndexChange<SerializableMonoScript, TValue>(SerializableMonoScript, Action), TextInputBaseFieldTextSelectionExtensions.AddOnSelectIndexChange<SerializableMonoScript, TValue>(SerializableMonoScript, Action), INotifyValueChangedExtensions.AddValueChanged<SerializableMonoScript, TValue>(SerializableMonoScript, EventCallback<ChangeEvent<TValue>>), ProfilerMarkerExtensionsForGenerator.Marker<SerializableMonoScript>(SerializableMonoScript), TextInputBaseFieldTextSelectionExtensions.RemoveOnCursorIndexChange<SerializableMonoScript, TValue>(SerializableMonoScript, Action), TextInputBaseFieldTextSelectionExtensions.RemoveOnSelectIndexChange<SerializableMonoScript, TValue>(SerializableMonoScript, Action), INotifyValueChangedExtensions.RemoveValueChanged<SerializableMonoScript, TValue>(SerializableMonoScript, EventCallback<ChangeEvent<TValue>>), TextInputBaseFieldExtensions.SetAutoCorrection<SerializableMonoScript, TValue>(SerializableMonoScript, bool), TextInputBaseFieldTextSelectionExtensions.SetCursorIndex<SerializableMonoScript, TValue>(SerializableMonoScript, int), TextInputBaseFieldExtensions.SetDelayed<SerializableMonoScript, TValue>(SerializableMonoScript, bool), TextInputBaseFieldTextSelectionExtensions.SetDoubleClickSelectsWord<SerializableMonoScript, TValue>(SerializableMonoScript, bool), TextInputBaseFieldExtensions.SetHideMobileInput<SerializableMonoScript, TValue>(SerializableMonoScript, bool), TextInputBaseFieldExtensions.SetHidePlaceholderOnFocus<SerializableMonoScript, TValue>(SerializableMonoScript, bool), TextInputBaseFieldExtensions.SetHideSoftKeyboard<SerializableMonoScript, TValue>(SerializableMonoScript, bool), SliderExtensions.SetHighValue<SerializableMonoScript, TValue>(SerializableMonoScript, TValue), TextInputBaseFieldExtensions.SetKeyboardType<SerializableMonoScript, TValue>(SerializableMonoScript, TouchScreenKeyboardType), BaseFieldExtensions.SetLabel<SerializableMonoScript, TValue>(SerializableMonoScript, string), SliderExtensions.SetLowValue<SerializableMonoScript, TValue>(SerializableMonoScript, TValue), TextInputBaseFieldExtensions.SetMaskChar<SerializableMonoScript, TValue>(SerializableMonoScript, char), TextInputBaseFieldExtensions.SetMaxLength<SerializableMonoScript, TValue>(SerializableMonoScript, int), TextInputBaseFieldExtensions.SetPassword<SerializableMonoScript, TValue>(SerializableMonoScript, bool), TextInputBaseFieldExtensions.SetPlaceholder<SerializableMonoScript, TValue>(SerializableMonoScript, string), TextInputBaseFieldExtensions.SetReadOnly<SerializableMonoScript, TValue>(SerializableMonoScript, bool), TextInputBaseFieldTextSelectionExtensions.SetSelectAllOnFocus<SerializableMonoScript, TValue>(SerializableMonoScript, bool), TextInputBaseFieldTextSelectionExtensions.SetSelectAllOnMouseUp<SerializableMonoScript, TValue>(SerializableMonoScript, bool), TextInputBaseFieldTextSelectionExtensions.SetSelectIndex<SerializableMonoScript, TValue>(SerializableMonoScript, int), TextInputBaseFieldTextSelectionExtensions.SetSelectable<SerializableMonoScript, TValue>(SerializableMonoScript, bool), TextInputBaseFieldTextSelectionExtensions.SetTripleClickSelectsLine<SerializableMonoScript, TValue>(SerializableMonoScript, bool), INotifyValueChangedExtensions.SetValue<SerializableMonoScript, TValue>(SerializableMonoScript, TValue, bool)
Examples
public class Spawner : MonoBehaviour
{
[SerializeField] private SerializableMonoScript _componentType;
private void Start()
{
Type type = _componentType; // implicit conversion
if (type != null)
gameObject.AddComponent(type);
}
}
Remarks
In the editor the script asset is the source of truth: on every serialization the stored assembly-qualified
name is re-read from the script's class. The script reference is editor-only, so a player build carries just
the name and resolves it exactly as SerializableType does.
Only types Unity maps to a script asset can be referenced this way — a top-level, non-generic class declared
in a file of the same name. Use SerializableType for nested and generic types.
Properties
BaseType
Gets the constraint the stored type must satisfy; Object when unconstrained.
public override Type BaseType { get; }
Property Value
Operators
implicit operator Type?(SerializableMonoScript?)
Converts the wrapper to the type it holds.
public static implicit operator Type?(SerializableMonoScript? type)
Parameters
type SerializableMonoScript?
The wrapper to convert.
Returns
Type?
The wrapped type, or null when the wrapper is null or holds no resolvable type.