Class OnScreenControl
Base class for on-screen controls.
Inherited Members
Namespace: UnityEngine.InputSystem.OnScreen
Assembly: Unity.InputSystem.dll
Syntax
public abstract class OnScreenControl : MonoBehaviour
Remarks
The set of on-screen controls together forms a device. A control layout is automatically generated from the set and a device using the layout is added to the system when the on-screen controls are enabled.
The layout that the generated layout is based on is determined by the control paths chosen for each on-screen control. If, for example, an on-screen control chooses the 'a' key from the "Keyboard" layout as its path, a device layout is generated that is based on the "Keyboard" layout and the on-screen control becomes the 'a' key in that layout.
If a GameObject has multiple on-screen controls that reference different types of device layouts (e.g. one control references 'buttonWest' on a gamepad and another references 'leftButton' on a mouse), then a device is created for each type referenced by the setup.
Properties
control
The actual control that is fed input from the on-screen control.
Declaration
public InputControl control { get; }
Property Value
Type | Description |
---|---|
InputControl |
Remarks
This is only valid while the on-screen control is enabled. Otherwise, it is null
. Also,
if no controlPath has been set, this will remain null
even if the component is enabled.
controlPath
The control path (see InputControlPath) for the control that the on-screen control will feed input into.
Declaration
public string controlPath { get; set; }
Property Value
Type | Description |
---|---|
string |
Remarks
A device will be created from the device layout referenced by the control path (see TryGetDeviceLayout(string)). The path is then used to look up control on the device. The resulting control will be fed values from the on-screen control.
Multiple on-screen controls sharing the same device layout will together create a single
virtual device. If, for example, one component uses "<Gamepad>/buttonSouth"
and another uses "<Gamepad>/leftStick"
as the control path, a single
Gamepad will be created and the first component will feed data to
buttonSouth and the second component will feed data to
leftStick.
See Also
controlPathInternal
Accessor for the controlPath of the component. Must be implemented by subclasses.
Declaration
protected abstract string controlPathInternal { get; set; }
Property Value
Type | Description |
---|---|
string |
Remarks
Moving the definition of how the control path is stored into subclasses allows them to apply their own InputControlAttribute attributes to them and thus set their own layout filters.
Methods
OnDisable()
Declaration
protected virtual void OnDisable()
OnEnable()
Declaration
protected virtual void OnEnable()
SendValueToControl<TValue>(TValue)
Declaration
protected void SendValueToControl<TValue>(TValue value) where TValue : struct
Parameters
Type | Name | Description |
---|---|---|
TValue | value |
Type Parameters
Name | Description |
---|---|
TValue |
SentDefaultValueToControl()
Declaration
protected void SentDefaultValueToControl()