Zum Inhalt springen

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.

  1. Erstellen Sie die erforderlichen Ordner in Ihrem Unity-Projekt:
Assets/Plugins/Windows/x86_64
  1. 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:

Terminal-Fenster
$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 $tempDir
if (!(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/

  1. 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.

  1. 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. DLL-Einstellungen im Inspector

  1. 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”

DLL-Einstellungen im Inspector (Fortsetzung)

Fertig, das sollte funktionieren!