Skip to main content

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​

SerializableMonoScript<T>

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​

Type

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.