Instead of having the GetActionName then having to generate the method in each of the MoveAction and SpinAction scripts. I found it much simpler to just do the following:
[Header("Base Action Information")]
[SerializeField] protected string actionName;
protected Unit unit;
protected bool isActive;
protected Action onActionComplete;
protected virtual void Awake()
{
unit = GetComponent<Unit>();
}
public string GetActionName() { return actionName; }
This provides the same results with less code and I, personally, feel it is more User friendly since we can now set the Action Name in the inspector.