Base class for most concrete interactable types.
New interactables can be created by inheriting from this class directly; however, it is also common for new interactables to inherit from PointerInteractable<TInteractor, TInteractable>, a descendent type which adds features for characterizing interactions as PointerEvents.
Interactions can be wholly defined by three things: the concrete Interactor, the concrete Interactable, and the logic governing their coordination. Subclasses are responsible for implementing that coordination logic via template methods that operate on the concrete interactor and interactable classes.
This type has a
curiously recurring generic argument TInteractable , which should be the concrete interactable type which derives from this type and is uniquely associated with TInteractor .