Open matronator opened 2 years ago
Hello dude, thanks for reporting this issue
This plugin supports multiple versions of Unity, since .NET Framework 3.5 and async/await syntax is not supported in previous versions, that's why we are using RSG.Promise for management of async operations, any ideas or pull requests to support async/await are really welcome! ❤️
Shameless plug - probably a non-starter, but I built a Promise library that supports async/await, is much more efficient than RSG (on par with UniTask), and supports old versions of Unity also. I say non-starter because switching from RSG
to Proto.Promises
would likely break consumers of this library, but maybe worth taking a look (maybe for a v3 update?). :smile:
@timcassell congrats mate, that's amazing! 💯
@jdnichollsc Does that mean you're interested in making the switch? I'd be happy to help with the integration if you want.
As a bonus, the Promise source code wouldn't need to be included in the package like you did with RSG
, since ProtoPromise
is on the asset store and nuget, so it could just be listed as a dependency instead.
@timcassell sure thing, any pull request is really appreciated, thanks in advance for your contribution! ❤️
@jdnichollsc Cool. Before I start, I want to understand how the nuget package works. Are you including the Unity dlls in the package? How is the nuget package consumed? Does it work outside of Unity? What differences are there between the nuget package and unity package?
[Edit] I ask because I have some Unity-specific helpers in ProtoPromise that are not included in the nuget package, only in the unity package, so that it can work on other frameworks. I may have to package those helpers as a separate nuget package, depending how your nuget package works.
[Edit2] I went ahead and made that separate package anyway, and updated the core package to work in old Unity versions (notably IL2CPP that had a lot of problems that I had to work around prior to Unity 2021.2).
Promises are so ugly, especially when you have to chain multiple
.Then()
blocks. So I tried toawait
the promise instead, but it won't compile because they're not awaitable.Now this might be just a misunderstanding of C# promises, coming from JavaScript ESNext, but isn't
async
/await
basically the same thing as promises, but with much cleaner and nicer syntax?As in, doesn't this code
do the exact same thing as this one?
Or at least it would if the promise could be awaited. Which would be awesome!