Jump to content
Unity Insider Forum
  • Announcements

    • Lars

      Allgemeine Forenregeln   03/13/2017

      Forenregeln Nimm dir bitte einen Moment um die nachfolgenden Regeln durchzulesen. Wenn du diese Regeln akzeptierst und die Registration fortsetzen willst, klick einfach auf den "Mit der Registrierung fortfahren"-Button. Um diese Registration abzubrechen, klick bitte einfach auf den "Zurück" Button deines Browsers. Wir garantieren nicht für die Richtigkeit, Vollständigkeit und Brauchbarkeit der Nachrichten und sind auch nicht dafür verantwortlich. Die Beiträge drücken die Meinung des Autors des Beitrags aus, nicht zwangsläufig das, wofür die Forensoftware steht. Jeder Nutzer, der denkt, dass ein veröffentlichter Beitrag unzulässig bzw. störend ist, ist aufgefordert uns unverzüglich per E-Mail zu kontaktieren. Wir haben das Recht störende Beiträge zu löschen und bemühen uns, das in einem realistischem Zeitraum zu erledigen (sofern wir beschlossen haben, dass die Löschung notwendig ist). Du akzeptierst, durchgehend während der Nutzung dieses Services, dass du dieses Forum nicht dazu missbrauchen wirst, Inhalte zu veröffentlichen, welche bewusst falsch und/oder verleumderisch, ungenau, beleidigend, vulgär, hasserfüllt, belästigend, obszön, sexuell belästigend, bedrohlich, die Privatsphäre einer Person verletzend oder in irgend einer Art und Weise das Gesetz verletzen. Des Weiteren akzeptierst du, dass du keine urheberrechtlich geschützte Inhalte ohne Erlaubnis des Besitzers in diesem Forum veröffentlichst. Mit dem Klick auf den "Mit der Registrierung fortfahren"-Button, akzeptierst du zudem unsere Datenschutzerklärung und stimmst der Speicherung deiner IP-Adresse und personenbezogenen Daten zu, die dafür benötigt werden, um dich im Falle einer rechtswidrigen Tat zurückverfolgen zu können bzw. permanent oder temporär aus dem Forum ausschließen zu können. Es besteht keine Pflicht zur Abgabe der Einwilligung, dies erfolgt alles auf freiwilliger Basis.   Zusatzinformationen Der Forenbetreiber hat das Recht, Nutzer ohne Angabe von Gründen permanent aus dem Forum auszuschließen. Des Weiteren hat er das Recht, Beiträge, Dateianhänge, Umfrage, Blogeinträge, Galleriebilder oder Signaturen ohne Angabe von Gründen zu entfernen. Mit der Registrierung verzichtest du auf alle Rechte an den von dir erstellten Inhalten, bzw. treten diese an das Unity-Insider.de und Unity-Community.de ab. Dies bedeutet im Klartext, dass das Unity-Insider.de und Unity-Community.de frei über deine Texte verfügen kann, sofern diese nicht wiederum die Rechte anderer verletzen. Es besteht weiterhin kein Anspruch von registrierten Nutzern bzw. ehemaligen registrierten Nutzern darauf, dass erstellte Inhalte und/oder die Mitgliedschaft (User) wieder gelöscht werden (Erhaltung der Konsistenz dieses Forums).   Einwilligungserklärung Wenn du mit der Speicherung deiner personenbezogenen Daten sowie den vorstehenden Regeln und Bestimmungen einverstanden bist, kannst du mit einem Klick auf den Mit der Registrierung fortfahren-Button unten fortfahren. Ansonsten drücke bitte Zurück. Stand: 07.03.2011

coco07

Members
  • Content count

    24
  • Joined

  • Last visited

Community Reputation

0 Neutral

About coco07

  • Rank
    Member

Recent Profile Visitors

329 profile views
  1. Game stottert mit 200 FPS

    Zer0Cool, habe ich gerade gemacht. Gleiches Problem, flüssig ist was anderes... Da zahlt man für Plus 40 Euro im Monat und Unity bekommt es nicht hin, das Build anständig zu exportieren. Sauber! Ich werde mal weiter forschen und vielleicht bekomme ich das Problem ja demnächst in den Griff Werde dann hier im Thread schreiben, sobald es läuft! DANKE erstmal an euch 2
  2. Game stottert mit 200 FPS

    Zer0Cool, werde ich gleich mal testen --> Guter Tipp Sascha@ Ja, selbst Animationen, die ich mit dem Animator gemacht habe, und simple Transform-Verschiebungen enthalten, laufen in Slowmotion und man sieht jedes einzelne Frame. Ich kann mir auch nicht vorstellen, dass irgendwas am Code nicht peformant genug wäre, um das Spiel auf einem iPhone 7 nicht ruckelfrei anzeigen zu lassen, auf einem S3 mini aber schon.. WIe gesagt, auf Android butterweich und ich hatte gleiche Resultate, bevor ich bei Unity nicht VSync auf "every V Blanc" stellte und fälschlicherweise damit deaktiviert hab. Auf dem S3 Mini, LG G2 mini, LG g2 und nem alten HTC läufts ohne Probleme. Ich habe jetzt mal das Menü auf dem iPad getestet. Außer UI Buttons und einem Partikelsystem(max 10 Partikel pro Sekunde), ist dort nicht enthalten --> kein eigener Code. Die Partikel bewegen sich in Zeitlupe... Auch eine leere Szene zeigt im Profiler "unaccounted time between..." an Ich füge mal den Profiler einer leeren Szene bei. Man sieht, auch hier sind Peaks enthalten edit: Ich habe jetzt mal ein Rotate-Script mit folgender Update Methode geschrieben: void Update(){ mTransform.Rotate(speed * Time.deltaTime); } Geschwindigkeit ist auf Android und iOS natürlich gleich, auf dem iPad und iPhone allerdings alles andere als flüssig. Fühlt sich wie gesagt wie ca. 5-10 FPS an. Man kann einzelne Frames erkennen
  3. Game stottert mit 200 FPS

    Hallo Zer0Cool, die Peaks sind ja nicht mal das Problem. Das Game stottert ohne Ende bei 200FPS... Fühlt sich an wie 5-10 FPS und ist absolut unspielbar. Ich hätte eigentlich damit gerechnet, dass hier jemand "Unaccounted time between..." mit ca 30ms per frame anspricht. Ich finde bei Google absolut nichts darüber und Unity gibt mir schlichtweg zu wenig Infos. Mal abgesehen davon, dass 30ms per Frame mit 200FPS gar nicht möglich sind... Und das tritt überall auf, nicht nur bei den Peaks. MfG Coco07
  4. Hallo liebe Community, ich bin gerade dabei ein Game zu schreiben und habe heute das erste Mal auf meinen iOS-Geräten getestet. Ergebnis war, dass das Game ohne Ende stottert bei (laut Profiler) ca. 200FPS auf dem iPad und 100FPS auf dem iPhone. Was mich etwas stutzig macht war die Tatsache, dass ich dieses Problem zuerst auch auf Android Geräten hatte, welches ich beheben konnte, in dem ich in den Qualitysettings den VSync Counter auf "Every Blank" stellte. Ab da wurde im Profiler "WaitForTargetFPS" nicht mehr angezeigt und das Game läuft flüssig. Gibt es hier aktuell einen VSync Bug in Unity? Müsste es nicht genau anders herum sein? Bei VSync "on" sollte "WaitForTargetFPS" bei zu hoher FPS im Profiler angezeigt werden und nicht bei VSync "off", oder liege ich da falsch? Bei iOS macht es keinen Unterschied, ob ich es an oder aus stelle, das Ergebnis bleibt das Gleiche --> Ca 100 - 200 FPS und das Game stottert wie sonst was und es spielt sich wie im "Slow-Motion Mode". Ich habe übrigens keine Positionsveränderungen in Update statt in FixedUpdate enthalten. Bei Touch wird einem Objekt einfach eine Geschwindigkeit zugewiesen, daher kann der Fehler also schon mal nicht kommen. Wäre ja auch seltsam, denn auf Android läufts absolut butterweich. Habe mal ein Screenshot vom Profiler unter iOS beigefügt. Ich bin für jegliche Antwort sehr dankbar MfG Coco07
  5. Unity2D Performance?

    Mark@ Ich teste das Game auf den beiden mobilen Geräten und da komme ich nicht über die 60fps hinweg. Allerdings wird es auf Android irgendwo eine Beschränkung geben. Mehr FPS bringen dem User wohl auch nicht mehr, außer, dass er sein Handy öfter laden darf Zer0Cool@ Ich hatte schonmal alles genau so eingestellt und da machte es keinen Unterschied, deswegen hatte ich VSync ohne Hintergedanken wieder aktiviert, um keinen Tearing-Effekt zu bekommen. Diese Einstellungen waren mir deshalb auch bekannt Allerdings frage ich mich, warum Unity hier nicht selbst die Dinge mit der Performance regelt, wenn es um mobile Apps geht. Mehr Sinn würde es machen, dass man die Quali hochschrauben kann, wenn man unzufrieden ist, und nicht anders herum :/ Danke euch zwei, damit muss ich erstmal leben. Wenn ich noch weitere relevante Performanceupgrades erziele, gebe ich euch Bescheid Dankeschön
  6. Unity2D Performance?

    Zer0Cool@ Mit dem Shader hat es jetzt geklappt. Habe es beim ersten Mal wohl einfach verkehrt gemacht. Die Texturen sind jetzt sichtbar und die Performance gefühlt gestiegen Dankeschön nochmal Mark@ Habe VSync mal testweise deaktiviert. Das Game läuft zwar flüssiger als vorher, allerdings ist Gfx.WaitForPresent mit ca 5-10 ms noch immer im Profiler zu sehen :/ Dankeschön Ich bekomme jetzt dank diesen Änderungen aber fast konstante 60FPS auf dem Tablet und S3 Mini, was ausreichend sein sollte. Bin für weitere "versteckte" Optimierungen trotzdem weiterhin dankbar
  7. Unity2D Performance?

    Vielen Dank für deine Hilfe Werde ich testen, sobald ich Zuhause bin und gebe dann Rückmeldung Edit: So, habe diesen Shader mal eingefügt(zum ersten Mal) und das Ergebnis ist weniger erfreulich :/ Ich habe einen Shader unter Create->Shader->Standard Surface Shader erstellt und deinen Code in das leere Dokument ausgeführt. Dann ein neues Material erstellt und deinen Shader zugewiesen. Ist es richtig, dass ich für jede Grafik, welche diese Shader nutzen soll, ein eigenes Material erstellen muss? Um das mal zu demonstrieren, wie das aussehen soll: Sobald diese im Vordergrund stehenden Grafiken im Bild sind, ruckelt es auf dem S3 Mini und Amazon Tablet so stark, dass die Figur beim springen 3 mal so lang in der Luft bleibt. Nehme ich diese raus, ist wieder alles blendend... (Wie gesagt, auf einem stärkeren Smartphone merkt man NICHTS).. Mit dem Shader sieht es so aus: Grüße Coco07 Edit2: Ich habe jetzt einfach mal ALLES in der Szene deaktiviert bis auf die Kamera. Gfx.WaitForPresent bleibt weiterhin bei über 10ms pro frame, obwohl nichts auf den Bildschirm gezeichnet wird. Das macht doch gar keinen Sinn :/
  8. Unity2D Performance?

    Hallo Mr 3d, erst einmal vielen Dank für die Antwort Der Profiler sagt dazu folgendes: Obwohl hier 60FPS angezeigt werden, ruckelt das Spie, sobald ich in die Nähe der beiden Grafiken komme stark :/ Zer0Cool@ Danke für deine Antwort, hat sich gerade etwas überschnitten Es ist nur dieses eine Skript für den Player in der Szene aktiv. Dort wird in der Update Methode nur die Input-Behandlung abgearbeitet. Wenn ich dieses Skript auch noch deaktiviere, kann ich den Player nicht mehr steuern. Allerdings ruckelt es ja nicht, wenn ich diese beiden anderen übereinander liegenden Grafiken entferne. Der Profiler sagt ja auch, dass die CPU auf die GPU wartet. Kann mir allerdings nicht erklären, warum es so lange dauert 3 übereinander liegende Grafiken zu zeichnen :S
  9. Unity2D Performance?

    Hallo Community, ich habe bei meinem neuen Spiel Performance-Probleme, welche ich einfach nicht lösen kann :/ Es handelt sich dabei um einen einfachen 2D Sidescroller. In der Szene vorhanden sind von hinten nach vorne ein Fullscreen Background, 2 breitere Hintergründe(übereinander mit etwas Transparenz), welche Gebäude simulieren und eine Figur im Vordergrund. Die 3 Layer, welchen einen realistischen Hintergrund darstellen sollen, sind einfach Grafiken, welche größtenteils aus nur einer Farbe bestehen. Die Spielfigur lässt sich durch einen Joystick steuern. Wenn ich nun die beiden Layer im Hintergrund entferne, läuft die Spielfigur mit Hilfe des Rigidbodys und der Interpolation sehr flüssig bei 200 FPS hin und her. Sobald die beiden Layer aktiv sind, bricht die Framerate auf rund 30 FPS runter. Als Material wird der "Sprite-Default"-Shader verwendet. Zur Komprimierung der Grafiken wird ein TextureAtlas benutzt. Durch stundenlanges Googlen habe ich dann irgendwann herausgefunden, dass das Phänomen wohl als "Overdraw" bezeichnet wird und dann zu Stande kommt, wenn Grafiken, wie der Name schon sagt, übereinander gezeichnet werden. Ist es normal, dass die Framerate von rund 200 FPS auf 30 runter bricht, wenn 3 Grafiken(ca 356x200 Pixel pro Sprite) übereinander gezeichnet werden? Dazu muss ich sagen, dass ich auf einem S3 Mini und einem Amazon Kindle HD 3.gen teste, weil ich das Game auch gerne auf Geräten mit nicht so viel Leistung laufen lassen möchte. Titel à la Candy Crush oder Temple Run(entwickelt mit Unity) laufen allerdings absolut flüssig auf Diesen. Auf nem LG G2 läuft mein Game wunderbar mit keinerlei Einbußen... Kann sich jemand einen Reim darauf machen? Grüße Coco07
  10. Hallo Community, Text schreibt man ja für gewöhnlich mit Hilfe einer Fontdatei aka .ttf. Problem dabei ist, dass die Font, welche ich ursprünglich nutzen wollte, transparent ist und Unity diese natürlich nicht mit Farbe füllen kann. Jetzt habe ich mir eine eigene Font(png) in Photoshop erstellt und würde diese nun gerne für Gui-Text einsetzen. Wie mache ich das am besten? Anders gefragt, wie ist der generelle Ablauf einer solchen Font-Erstellung? Macht man generell eine Vector Grafik für Fonts fertig oder lässt sich das auch via PNG und Hard-Coding "einfach" lösen? Wie handhabt ihr das? Mit freundlichen Grüßen Coco07!
  11. Halo Mr 3d, vielen Dank für deine Hilfe. Deine Lösung ist zwar nicht die Gesuchte, aber trotzdem der Denkanstoß für die Endgültige gewesen. Hier ist die Endgültige: Unity ist für 2D Animation nun wirklich alles andere als optimiert. LibGDX bietet hier wesentlich einfachere Eventsysteme an. Unity gefällt mir dahingehend überhaupt nicht.
  12. Hallo TobLine, würde nicht funktionieren. Ich brauche eine einmalig abgespielte Animation beim loslassen des Buttons. Deswegen der kleine Hinweis "Wie bei Candy Crush von King". Er soll praktisch diesen "bubble Effekt" nachahmen. Danke für deine Antwort
  13. Hallo Community, ich komme derzeit beim Animieren eines Buttons im Spiel nicht weiter. Animation in LibGDX waren ein einfaches Thema. In Unity scheint mir das sehr komplex zu sein. Wenn ich in der von Unity bereitgestellten Button Komponente "Transition" auf Animation stelle und dann in das Animations-Fenster wechsle, finde ich dort nur "Normal", "Highlighted", "Pressed" und "Disabled" als mögliche States, nicht aber "Released". Kann ich diesen State nur per Code animieren? Der Button soll beim Drücken kleiner skaliert werden und beim loslassen eine kleine Animation zeigen. Ähnlich wie bei Candy Crush von King. Gibt es eine andere Möglichkeit als diesen per Code zu animieren? Mit freundlichen Grüßen Coco07
  14. Hallo Community, ich schreibe gerade einen kleinen 2D-Shooter. Das Bewegen mit Hilfe der RigidBody2D Komponente und dem dazugehörigen NetworkTransform funktioniert inklusive der Animation-Synchronisierung auf allen Clients. Beim Schießen komme ich derzeit nicht weiter. Wenn ich die Kugel auf dem Server spawne, habe ich auf meinem eigenen Client eine Verzögerung. Die Kugel kommt also nicht mehr direkt aus der Waffe, sondern hinkt um die Zeit des Pings hinterher. public void CmdShoot(){ GameObject bullet = (GameObject) GameObject.Instantiate (bulletPrefab, spawnPosition.position, spawnPosition.rotation); bullet.GetComponent<Rigidbody2D> ().velocity = bullet.transform.right * BULLET_SPEED; NetworkServer.Spawn (bullet); } Die Lösung ist wohl "Client Side Prediction"? Also habe ich einfach eine Kugel lokal auf meinem eigenen Client gespawnt und die SpriteRenderer Komponente der Kugel, welche auf dem Server gespawnt wird, deaktiviert. Jetzt sehe ich meine eigene Kugel ohne Verzögerung direkt aus der Waffe fliegen. Die im Netzwerk aktive Kugel ist zwar nicht mit der lokalen Kugel synchronisiert, aber das macht nichts. Ich habe also 2 Kugeln pro Schuss -> Eine nur für mich sichtbare(fürs Optische) und die richtige im Netzwerk aktive Kugel(für Kollisionen usw.). Die Frage ist nun, wie ich die im Netzwerk aktive Kugel auch auf den anderen Clients sichtbar machen kann, da die SpriteRenderer Komponente ja deaktiviert ist. Wenn ich diese im Script der Kugel aktiviere, sehe ich natürlich meine lokale UND die im Netzwerk Aktive auf meinem eigenen Client. Optisch sieht das nicht wirklich berauschend aus. Gibt es dafür eine Lösung? Ich habe bereits versucht eine lokale Liste zu erzeugen und jede im Netzwerk gespawnte Kugel hinein zu legen. Funktioniert aber leider nicht, da der "Command" nur auf dem Server aufgerufen wird... Ich bin echt ratlos edit: Mit Client-Authority ist das Problem behoben, in dem ich in der Start Methode des Kugel-Scripts einfach die Bedingung if (!hasAuthority) { GetComponent<SpriteRenderer> ().enabled = true; } hinzufüge... Allerdings bekomme ich dann auf einem der beiden Clients eine Fehlermeldung: "HandleTransform no gameObject" in UnityEngine.Networking.NetworkIdentify: UnetStaticUpdate() Außerdem ist das wieder unnötiger Traffic, da die Kugel mit dem Server synchronisiert wird? MfG Coco07
  15. Verständnisfrage zu Scripts!

    Hey Hirk, erst einmal vielen Dank für deine Antwort. In deiner Antwort gehst du offensichtlich auf GUI Komponenten ein, welche bereits existieren. Wie aber sieht das mit neuen Komponenten ein, welche ich selbst erzeugen möchte? Beispielweise würde ich in Java eine Klasse haben, welche sich Character nennt und viele Daten und Objekte miteinander vereint. Dazu gehört zum Beispiel eine Waffe(eine eigene Klasse), ein Inventar(eine eigene Klasse) usw. Dieses kann ich in Unity nicht umsetzen, da würde ich dann in der Szene ein Inventar-Objekt erzeugen(empty) und ein Script draufhauen, welches eigentlich total unnötig ist. Genau wie mit Eigenschaften, welche zum Start des Spiels gesetzt werden müssen, denn dafür muss ich ein Script schreiben und es entweder auf wieder ein neu erzeugtes Objekt(empty) hauen oder sinnlos auf die Kamera setzen. Das sind all so Sachen, die für mich nicht richtig durchdacht erscheinen und man hätte sinnvoller gestalten können. Zum Beispiel möchte ich gerne dynamisch zur Laufzeit verschiedene Objekte ins Spiel bringen und verschieden sich bewegen lassen, verschiedene Physik zuweisen und von gerade passierenden Spielerverhalten beeinflussen lassen. Ist das möglich? Mir kommt das so vor, als würde man keine neuen Klassen schreiben, welche einen Zustand und Verhalten präsentieren, sondern nur beschreiben soll, was das in der Szene vorhandene Objekt in jedem Frame machen soll. Ich denke mal, es ist schwer zu verstehen, woraus ich hinaus will. Vielleicht versteht es der ein oder andere MfG Coco07!
×