Ich wollte dies bei Unity Answers nachfragen, aber es wird immer wieder ein Fehler angezeigt, wenn ich versuche, auf die Website zu gelangen. Ich dachte also, ihr könntet vielleicht helfen. Ich habe auch den Unity3d-Subreddit ausprobiert und es auch dort nicht geschafft, ihn zu lösen.
Ich versuche, eine Liste aller auf meinem Mac ausgeführten Prozesse von meiner Unity-Anwendung abzurufen. Die letzte Idee besteht darin, zu überprüfen, ob bestimmte Anwendungen ausgeführt werden (z. B. TextEdit).
Ich habe zuerst versucht, mit GetProcessByName nach einer offenen Anwendung zu suchen, habe aber diese Ausnahme erhalten, obwohl der Prozess ausgeführt wird :
InvalidOperationException: Process has exited, so the requested information is not available.
Dann habe ich beschlossen, so einfach wie möglich zu gehen. Ich dachte, ich würde einfach eine Liste aller laufenden Prozesse ausdrucken, um damit zu beginnen. Hier ist mein Code:
Process[] processes = Process.GetProcesses();
GUI.Label( new Rect(x, y, 100, 20), "Process: " + processes.Length );
y += 20;
foreach (Process process in processes) {
try
{
if (!process.HasExited)
{
GUI.Label( new Rect(x, y, 100, 20), "process: " + process.ProcessName );
y += 20;
}
}
catch (System.InvalidOperationException)
{
UnityEngine.Debug.Log("Holy batman we've got an exception!");
}
}
Wenn ich dies durch den Editor starte, sehe ich Folgendes:
Die Anzahl der ausgeführten Prozesse schwankt tendenziell um die 200er Jahre, aber der einzige Prozessname, der auf dem Bildschirm gedruckt wird, ist Unity.
Wenn ich versuche, alle Prozesse durch Entfernen der HasExited if-Anweisung zu drucken , wird dies angezeigt (natürlich passen nicht alle auf den Bildschirm):
Was mich denken lässt, dass es denkt, dass jeder Prozess außer Unity beendet wurde ... aber ich habe einige nicht abgeschlossene Prozesse ausgeführt, also frage ich mich, warum diese nicht aufgelistet werden? Grundsätzlich muss ich alle aktuell laufenden Prozesse durchsuchen . Irgendwelche Ideen? Gibt es ein Berechtigungsproblem, wenn nicht auf Eigenschaften externer Nicht-Unity-Prozesse zugegriffen werden kann?
EDIT: Ich sollte beachten, dass ich dies sowohl beim Durchlaufen des Editors als auch nach dem Erstellen versucht habe. Beim Ausführen nach dem Erstellen mit! Process.HasExited wird ein Prozess mit einem leeren Namen aufgelistet. Ich denke, das könnte die aktuell laufende Anwendung sein. Die Prozessanzahl liegt bei 240.