System.Action to UnityEngine.Events.UnityAction

Hello,

I have to convert an Action to UnityAction.

What would be the best way to do this?

        private void DummyMethod(Action callback)
        {
            UnityAction unityAction = ConvertActionToUnityAction(callback);
            button.onClick.AddListener(unityAction);
        }

        private UnityAction ConvertActionToUnityAction(Action callback)
        {
            return () => callback.Invoke(); /// something like that ????
        }

Thank you

It’s a delegate, so you can just instance a new one passing in your Action delegate.

public void Register(System.Action action)
{
    UnityAction unityAction = new UnityAction(action);
    button.onClick.AddListener(unityAction);
}

That was my first thought but somehow it didn’t compile (?). But it is now :slight_smile:

Thank you!