StolleJay Geschrieben 13. April 2019 Melden Share Geschrieben 13. April 2019 Hallo, bisher habe ich keinerlei Probleme in Sachen Performance etc. gehabt. Heute wo ich ein neues, relativ kleines Script fertig habe und dies auch funktioniert ist mir aufgefallen das nachdem ich dieses Script in der Szene Aktiviere ich von 60FPS auf unter 30FPS falle. Ich habe schon die Objekte die hier erstellt werden auf "Static" gestellt (damit diese auch in die Kategorie Occlusion Culling fallen) aber es wird nicht besser. using System.Collections.Generic; using UnityEngine; public class randomObjectGeneration : MonoBehaviour { List<Transform> objList = new List<Transform>(); Transform obj; public Transform[] go; public int objNumber = 0; public float objSizeMin = 1; public float objSizeMax = 1; private int objID = 0; private float objSize; private int sizeX; private int sizeZ; // Use this for initialization void Start() { sizeX = FindObjectOfType<settings>().sizeX; sizeZ = FindObjectOfType<settings>().sizeZ; for (var i = 0; i < objNumber; i++) { var index = Random.Range(0, go.Length); var pos = new Vector2(Random.value * sizeX, Random.value * sizeZ); objSize = Random.Range(objSizeMin, objSizeMax); Vector3 setpos = new Vector3(pos.x, 0, pos.y); Vector3 setrot = new Vector3(0, Random.Range(0, 360), 0); Vector3 setsize = new Vector3(objSize, objSize, objSize); objID++; obj = Instantiate(go[index], setpos, Quaternion.Euler(setrot)); obj.localScale = setsize; obj.name = go[index].name + "_[" + objID + "]"; obj.parent = transform; objList.Add(obj); } } } Ist da evtl. am Script etwas falsch oder habe ich etwas Übersehen? Das ist das erste mal das ich beim Start mehrere Objekte in untersch. Größe, Rotation etc. pp. Instantiieren lasse. Ich hoffe ihr könnt mir da weiterhelfen Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
runner78 Geschrieben 13. April 2019 Melden Share Geschrieben 13. April 2019 Das Problem dürfte weniger an diesem Script liegen, als an den Objekte die du erstellt. Start() wird nur ein einiges mal aufgerufen und hat keine Auswirkung auf die FPS. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MaZy Geschrieben 13. April 2019 Melden Share Geschrieben 13. April 2019 Profiler anschmeißen und anschauen warum dein FPS runter geht. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
StolleJay Geschrieben 14. April 2019 Autor Melden Share Geschrieben 14. April 2019 Das habe ich ich vergessen zu erwähnen. Auf einer Fläche (Unity Maße) von 8x8 werden 80 Objekte gespawnt. Das größte bzw. Komplexeste Objekt hat nur 102 tris von diesem gibt es dann ca. nur um die 20. die anderen 3 Objekte haben weit unter 100 tris. Also wirklich Low-Poly. Auch wenn ich nur 40 Objekte spawnen lasse bekomme ich nicht wirklich mehr FPS. Edit: Kann es an diesem "destroyable.Update" liegen? Alles in diesem Update rufe ich auf bzw. führe ich aus wenn eine variable auf "true" steht welche normal also bei Spielstart auf "false" gesetzt ist. Das ist auch der Fall das habe ich schon geprüft. Also sollte er das Update ja gar nicht aufrufen bzw. den Inhalt ausführen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 14. April 2019 Melden Share Geschrieben 14. April 2019 vor 59 Minuten schrieb StolleJay: Kann es an diesem "destroyable.Update" liegen? Ganz offenbar! Du machst irgendwo FindObjectsOfType in Update, und das ist eine superschlechte Idee. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
StolleJay Geschrieben 14. April 2019 Autor Melden Share Geschrieben 14. April 2019 Tatsache... Hab das destroyable Script nun umgebaut und siehe da... 60FPS ohne Probleme Danke für eure Hilfe Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.