I had an absolute mess of a time trying to get Unity working on Linux. Even once I got it working, it had an issue where hovering over the Burst menu would cause the whole OS to lock up and I would have to reboot. It wasn't a good experience. I've never used Wine so I don't know if that would be any better.
When I first got it working, I wrote down the steps I took. I don't know if this is everything I had to do or if I forgot a step, but it might be a good starting point.
- Install Unity Hub from the Pop!_Shop. I vividly remember not being able to get it to work right any other way.
- Install .NET and Mono via flatpak. I wrote down that it had to be version 6 of both SDKs, don't remember why.
- Install the flatpak version of Visual Studio Code. You can do this from the Pop!_Shop if you want.
- Get the C# extension for VSC if you don't have it.
- Once in Unity, go to "Edit/Preferences/External Tools" and check "Generate .csproj files for:"
- Embedded packages
- Local packages
- Registry packages
- Git packages
- Built-in packages
- Click "Regenerate project files"
- When you open a script, Unity will tell you to set "Omnisharp: Use Modern Net" to false in VSC's settings. Do this to get code suggestions.
I hope this helps! Welcome to Linux! If you need clarification on any of this, just ask.
For some reason I didn't include this in my original comment, but to install the flatpaks of .NET 6 and mono 6, you'll need to use the terminal. Here are the commands I used: