Ich habe ein C# -Skript in Unity geschrieben, das alle sichtbaren Objekte erkennt. Jetzt möchte ich sie von links nach rechts ausgeben, wie sie in der Szene positioniert sind. Jedes Objekt hat eine Nummer und dennoch gibt das Skript die Objekte in aufsteigender Reihenfolge aus.Objekte von links nach rechts lesen
Meine Idee:
Ich dachte an eine for-loop
, die sich entlang der horizontalen Sichtfeld geht. Erste Berechnung der horizontalen FOV von:
private static float horizontalFOV() {
float radAngle = Camera.main.fieldOfView * Mathf.Deg2Rad;
float radHFOV = 2 * Mathf.Atan(Mathf.Tan(radAngle/2) * Camera.main.aspect);
float hFOV = Mathf.Rad2Deg * radHFOV;
return hFOV;
}
und die Schaffung der Schleife durch:
public static string OutputVisibleRenderers (List<Renderer> renderers) {
float hFov = horizontalFOV();
if (null == renderers)
throw new System.ArgumentNullException ("renderers are null");
for (int i = 0; i < hFov; i++) {
foreach (var renderer in renderers) {
if (IsVisible (renderer)) {
myList.Add (renderer.name);
}
}
}
string itemsInOneLine = string.Join ("-", myList.ToArray());
myList.Clear();
print (itemsInOneLine);
print ("--------------------------------------------------");
return itemsInOneLine;
}
Aber unfortunally funktioniert das nicht. Wie könnte ich also alle Objekte von links nach rechts lesen?
Erhalten Sie einen Fehler oder sind 'Renderer' leer oder werden sie nicht zur Liste hinzugefügt? – jhhoff02
Weitere Informationen dazu, wie es "nicht funktioniert" wäre hilfreich. – hatchet
Sorry, ich meine, die Liste ist erstellt, aber alle Namen (die Zahlen sind) werden in aufsteigender Reihenfolge hinzugefügt. Und ich möchte, dass sie von der Position "Position" hinzugefügt werden, von links nach rechts. – Viktoria