Der wohl wichtigste Unterschied ist, dass Unity Random.Range
etwas einfacher zu bedienen ist, da es statisch ist. Die C # -Basisklassenbibliothek System.Random
bietet Ihnen jedoch mehr Kontrolle und Isolation.
Es ist möglich, dass sie auch andere Implementierungen unter der Haube verwenden (obwohl ich vermute, dass die von Unity Random
nur in Bezug auf das System implementiert ist Random
), aber das ist wahrscheinlich kein nennenswertes Problem. Grundsätzlich handelt es sich bei beiden wahrscheinlich um die gleiche Art von Zufallszahlengenerator: einen Pseudozufallsgenerator, der auf der Iteration einer durch einen Startwert definierten Sequenz basiert.
Das Kontrollproblem ist relevanter, da Sie in einigen Kontexten möglicherweise verschiedene Zufallsströme für verschiedene Dinge verwenden möchten. Beispielsweise möchten Sie in einem Netzwerkkontext mit schrittweisen Sperren möglicherweise den Startwert für die Generierung zufälliger Ereignisse mit Auswirkungen auf das Spiel für alle Spieler im Spiel korrigieren, aber Sie interessieren sich möglicherweise nicht so sehr für den reinen Zufallszahlenstrom visuelle Ereignisse und können ermöglichen, dass dieser Stream auf eine traditionellere Weise erzeugt wird (z. B. mit der Systemverfügbarkeit beim Start des Spiels).
Wenn Sie Zufallszahlen in mehreren Threads generieren möchten, möchten Sie möglicherweise für jeden Thread unterschiedliche zufällige Objekte verwenden, um Wettlaufsituationen zu vermeiden. Dies kann vorkommen, wenn Ihre Spielelogik über viele Threads läuft und Sie beispielsweise auch über ein Gameplay-Wiedergabesystem verfügen.
Am Ende ist es nicht unbedingt besser , das eine oder andere zu verwenden, sondern es gibt Vor- und Nachteile. Verwenden Sie eine Instanz von, wenn Sie die Folge von Zahlen von anderen potenziellen zufälligen Folgen isolieren müssen, die möglicherweise auftreten, oder wenn Sie eine lokalisierte Kontrolle über den Startpunkt der Folge benötigen System.Random
. Wenn Sie nur einen schnell und schmutzig zufälligen Wert für einen Wegwerfgebrauch oder ein anderes nicht wirkungsvolles Szenario benötigen, Random
ist Unitys vereinfacht wahrscheinlich in Ordnung.