Verwendung von TorchSharp & RLMatrix in Unity
Sie möchten WIRKLICH TorchSharp in Unity 2025 verwenden?
Die TorchSharp-Mitwirkenden könnten dies wahrscheinlich viel besser erklären als ich - aber im Wesentlichen beinhalten die Installationsschritte das Herunterladen von libtorch-DLLs (über 1GB) und deren Installation/Referenzierung.
Dies geschieht automatisch in neueren .NET Core-Versionen, aber da Unity noch nicht zu CoreCLR übergegangen ist, müssen wir viele Schritte manuell durchführen - einschließlich der NuGet-Installation. Ich habe bereits eine Anleitung zur effektiven Installation von NuGet-Paketen in Unity erstellt; diese kurze Anleitung erweitert sie lediglich um das manuelle Kopieren der DLLs.
- Erstellen Sie die erforderlichen Ordner in Ihrem Unity-Projekt:
Assets/Plugins/Windows/x86_64
- Installieren Sie RLMatrix mit NuGet
Laden Sie zunächst nuget.exe
von der NuGet-Website herunter und speichern Sie sie unter C:\nuget.exe
. Wenn Sie sie an einem anderen Ort speichern, aktualisieren Sie unbedingt den Pfad im folgenden Skript.
Speichern Sie das folgende PowerShell-Skript als install-rlmatrix.ps1
im Stammverzeichnis Ihres Unity-Projekts:
$packageName = "RLMatrix"$packageVersion = "0.4.0"$netTarget = "netstandard2.0"$tempDir = ".\Temp"$dllDir = ".\Assets\Plugins"$nugetPath = "C:\nuget.exe"if (!(Test-Path $nugetPath)) { Write-Error "NuGet.exe not found at $nugetPath. Please ensure it's installed there or update the path." exit 1}if (!(Test-Path $tempDir)) { New-Item -ItemType "directory" -Path $tempDir}& $nugetPath install $packageName -Version $packageVersion -OutputDirectory $tempDirif (!(Test-Path $dllDir)) { New-Item -ItemType "directory" -Path $dllDir}Get-ChildItem -Path $tempDir -Directory | ForEach-Object { $packagePath = Join-Path $_.FullName "lib\$netTarget" if (Test-Path $packagePath) { Get-ChildItem -Path $packagePath -Filter "*.dll" | ForEach-Object { $destinationPath = Join-Path $dllDir $_.Name if (!(Test-Path $destinationPath)) { Copy-Item -Path $_.FullName -Destination $destinationPath } } }}Remove-Item $tempDir -Recurse -Force
Weitere Details zur Funktionsweise dieses Skripts finden Sie unter: https://www.nurupo.io/posts/unityhowtonuget/
- Führen Sie das PowerShell-Skript aus
Dies kann bequem durch Rechtsklick auf die .ps1-Datei im Windows-Explorer und Auswahl von “Mit PowerShell ausführen” erfolgen.
- Holen Sie sich die nativen TorchSharp-DLLs
Kopieren Sie alle TorchSharp-DLLs nach Assets/Plugins/Windows/x86_64
. Ich habe diese aus einem .NET 8.0-Projekt kopiert, das ich hatte und das TorchSharp verwendete.
- Konfigurieren Sie die DLL-Importeinstellungen in Unity
Für jede DLL im Plugins-Ordner:
- Wählen Sie die DLL im Unity-Projektpanel
- Stellen Sie im Inspector sicher, dass die Einstellungen mit den folgenden übereinstimmen:
- Setzen Sie Platform auf “Windows”
- Setzen Sie CPU auf “x86_64”
Fertig, das sollte funktionieren!