© 2026 Hedgehog Software, LLC

TwitterGitHubDiscord
More
CommunitiesDocsAboutTermsPrivacy
Search
Star
Setup for Free
C#C
C#•3y ago•
113 replies
Carly.TeamSail

❔ UniTask / Unity - await/async connoisseurs wanted. Need help understanding

    public void TryRegister()
    {
        TryRegisterAsync().Forget(); // UI Register Button - Fire & Forget Method, 
    }
    public async UniTaskVoid TryRegisterAsync()
    {
        PlayerSelectionData[] psd = await tryRegisterAsync();
        
        UI_PlayerSelection.Instance.Init(psd);
        gameObject.SetActive(false);
    }
    private async UniTask<PlayerSelectionData[]> tryRegisterAsync()
    {
        var email = _emailInput.text;
        var pass = _passwordInput.text;

        PlayerSelectionData[] psd = await CommsManager.Instance.CMD_TryRegisterAsync(email, pass);

        return psd;
    }
    public void TryRegister()
    {
        TryRegisterAsync().Forget(); // UI Register Button - Fire & Forget Method, 
    }
    public async UniTaskVoid TryRegisterAsync()
    {
        PlayerSelectionData[] psd = await tryRegisterAsync();
        
        UI_PlayerSelection.Instance.Init(psd);
        gameObject.SetActive(false);
    }
    private async UniTask<PlayerSelectionData[]> tryRegisterAsync()
    {
        var email = _emailInput.text;
        var pass = _passwordInput.text;

        PlayerSelectionData[] psd = await CommsManager.Instance.CMD_TryRegisterAsync(email, pass);

        return psd;
    }

Is this correct?
I want to wait for Server (via CommsManager) to reply with
PlayerSelectionData[]
PlayerSelectionData[]
, after receiving that, I want to call
UI_PlayerSelection.Instance.Init(psd);
UI_PlayerSelection.Instance.Init(psd);


BTW, UniTask is pretty much the same as C# Tasks, just a different keyword for example
async void == async UniTaskVoid
async void == async UniTaskVoid
.

CommsManager (method just for testing):
    public async UniTask<PlayerSelectionData[]> CMD_TryRegisterAsync(string email, string pass)
    {
        await UniTask.Delay(1000);

        var psd1 = new PlayerSelectionData("Player_1", 3);
        var psd2 = new PlayerSelectionData("Player_2", 10);
        return new PlayerSelectionData[] { psd1, psd2 };
    }
    public async UniTask<PlayerSelectionData[]> CMD_TryRegisterAsync(string email, string pass)
    {
        await UniTask.Delay(1000);

        var psd1 = new PlayerSelectionData("Player_1", 3);
        var psd2 = new PlayerSelectionData("Player_2", 10);
        return new PlayerSelectionData[] { psd1, psd2 };
    }


This seems to work... But I heard its incorrect, see replies below.
Thanks
C# banner
C#Join
We are a programming server aimed at coders discussing everything related to C# (CSharp) and .NET.
61,871Members
Resources

Similar Threads

Was this page helpful?
Recent Announcements
Next page

Similar Threads

Understanding intricacy of async/await (memory safety)
C#CC# / help
2w ago
Async/Await question
C#CC# / help
2w ago
Help on how async/await works
C#CC# / help
2y ago
Need Unity audio help.
C#CC# / help
2y ago