SetNet.Unity
1.1.0
dotnet add package SetNet.Unity --version 1.1.0
NuGet\Install-Package SetNet.Unity -Version 1.1.0
<PackageReference Include="SetNet.Unity" Version="1.1.0" />
<PackageVersion Include="SetNet.Unity" Version="1.1.0" />
<PackageReference Include="SetNet.Unity" />
paket add SetNet.Unity --version 1.1.0
#r "nuget: SetNet.Unity, 1.1.0"
#:package SetNet.Unity@1.1.0
#addin nuget:?package=SetNet.Unity&version=1.1.0
#tool nuget:?package=SetNet.Unity&version=1.1.0
<p align="center"> <img src="https://raw.githubusercontent.com/Povstalez/SetNet/master/assets/icon.png" alt="SetNet" width="96"> </p>
SetNet.Unity
Unity helpers for SetNet.
SetNet's message handlers and lifecycle callbacks run on background threads, but Unity APIs (Transform, GameObject, UI, …) may only be touched on the main thread. This package gives you a tiny main-thread dispatcher to bridge the two.
Install
Add the DLLs (SetNet.dll, SetNet.Unity.dll, your serializer) to your Unity project's Assets/Plugins/, or reference the package in a package-manager-based project. Requires Unity 2021+ (netstandard2.1). WebGL is not supported (no threads/sockets).
Usage
Drain the queue once per frame from a single MonoBehaviour:
using SetNet.Unity;
public class NetDispatcher : MonoBehaviour
{
void Update() => MainThreadDispatcher.Shared.Drain();
}
Marshal handler work onto the main thread:
[MessageHandler((ushort)Msg.Move)]
public class MoveHandler : IClientMessageHandler<MoveMessage>
{
public Task HandleAsync(MoveMessage msg)
{
MainThreadDispatcher.Shared.Post(() =>
{
// safe: runs on the Unity main thread next frame
player.transform.position = new Vector3(msg.X, msg.Y, 0);
});
return Task.CompletedTask;
}
}
PostAsync(...) returns a task you can await if a background handler needs main-thread work to finish first.
IL2CPP / AOT
On IL2CPP/AOT targets (iOS, consoles, Android IL2CPP), MessagePack needs pre-generated formatters: run the mpc generator for your [MessagePackObject] DTOs and register the resolver at startup, or use an AOT-friendly serializer via SetNetSerializer.Use(...). On Mono/desktop it works out of the box.
Documentation & source
License
MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.1
- SetNet (>= 1.1.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.1.0 | 166 | 7/2/2026 |