Jump to content
Unity Insider Forum

malzbie

Moderators
  • Gesamte Inhalte

    5.568
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    427

Alle erstellten Inhalte von malzbie

  1. malzbie

    Apps mit Unity

    Wenn du z.B. irgend eine kleine App für Windows programmierst, z.B. in Visual Basic, dann ist der Bereich des Fensters in Ram abgelegt und solange da nichts drin passiert, wird auch nichts neu gezeichnet, also berechnet. Windows hat die komplette Info des Bildschirms im (Video)Ram und zeigt das einfach an. Wenn sich Bereiche des Bildschirminhaltes verändern, dann wird nur dieser Bereich im Ram überschrieben. Baust du deine App aber mit Unity, dann wird der Bereich bei jedem Update neu berechnet und in den Ram abgelegt. Vollkommen egal, ob sich auf dem Anzeigebereich etwas geändert hat, oder nicht. Also wenn du jetzt einfach nur ein UI Element anzeigen würdest, würde Unity immer gucken wo das Element liegt, ob etwas da drüber liegt, ob die Textur transparente Teile hat, was dahinter liegt usw. und dann mit all diesen Informationen das Bild neu berechnen. Unity überwacht nicht, ob sich die UI verändert hat und würde dann nur die Veränderungen zeichnen, nö, Unity macht immer das gleiche. Du kannst in Unity natürlich einstellen, wieviele FPS du haben willst. Aber 0 gibt es nicht. Selbst der Editor, ohne dass du auf Play gedrückt hast, zeichnet ständig neu. Du kannst das ja selber testen. Mach mal Unity kleiner und schieb das Fenster an den Rand. Jetzt machts die Ereignisanzeige auf, schiebst die auf die Andere Seite vom Screen und gehst auf Leistung. Klick mal den CPU Bereich an, damit du den Verlauf in groß siehst. Du siehst da eine Grundauslastung, wenn du die Maus in Ruhe lässt. Jetzt minimiere mal Unity. Du wirst einen Peak sehen, weil Windows jetzt kurz was zu tun hat. Danach ist aber die Grundauslastung geringer als vorher. Nicht viel, aber erkennbar. Ich hoffe du bist mit Windows unterwegs. Wenn nicht, mit dem Apfel kann man sich das auch anzeigen lassen. (Glaube ich)
  2. malzbie

    Apps mit Unity

    Guter Punkt!
  3. malzbie

    Apps mit Unity

    Der einzige Grund, der mir einfällt, ist die Größe des Programms. So eine Stoppuhr App kann man mit wenigen kB an Speicher erstellen. Mit Unity has du schnell bis zu 100MB zusammen. Man drück also mit einem Vorschlaghammer eine Reißzwecke in die Pinnwand. Sonst spricht nichts dagegen.
  4. Kein Problem. Unity hat schon so einige Bugs und einige sind schon ewig da. Man hört nicht viel darüber, weil diese Bugs recht speziell sind. Aber solch ein Bug, im Editor, würde richtig Wellen schlagen. Da hätte ich was drüber gehört. Viel Spaß beim Erkunden.
  5. Wenn du einen Meshrenderer deaktivierst, dann siehst du ihn in der Regel auch nicht mehr. Egal ob also Wireframe oder als solides Objekt. Was du sehen kannst, ist das Gittermodell des Colliders, wenn das Objekt denn einen hat. Das wäre dann grün. Einen Meshcollider würdest du nur sehen, wenn er auf convex gestellt ist. Die Info, dass du das Mesh sehen kannst, wenn der Meshrenderer aus ist, ist also falsch! Deine Camera und dein Light solltest du als Gizmo sehen, wenn Gizmos generell an sind. (Das Gizmo-Icon in der Leiste muss farbig sein) Wichtig ist aber auch, falls du beim GizmoMenü die 3D Icons aktiviert hast, dass die Icongröße auch richtig eingestellt ist. Ist der Schieberegler ganz links, siehst du auch dann keine Gizmos. Außerdem gibt es im DropdownMenü auch noch Häkchen für die Build-In Gizmos. Wenn bei der Camera kein Haken gesetzt wäre, würdest du sie auch nicht sehen. Und außerdem können auch alle BuildIn Gizmos mit einem Haken zusammen aus und eingeschaltet werden. Also: Gizmos an sich müssen an sein. Die Icons müssen groß genug sein, falls im 3D Modus. Build-In Gizmos müssen für sich auch an sein. Dann solltest du sie auch sehen. Das Unity einen Bug bei den Gizmos hat, ist mir jedenfalls nicht bekannt.
  6. Kann es sein, dass du die Gizmos ausgeschaltet hast? https://docs.unity3d.com/Manual/GizmosMenu.html
  7. Musik muss man nicht im Assetstore kaufen. Da ist die Auswahl eigentlich zu gering, denn Musiker sind nicht auf Gameengines spezialisiert. Ich kenne eine Musikerin aus GB, die unheimlich vielseitig ist und auch speziell für Inidieentwickler Musik produziert. Ihre Musik, wenn gekauft, ist Roaylity-free und kann dann überall genutzt werden. Hier mal der Link zu ihrer Pond5 Seite: https://www.pond5.com/de/artist/nicolemariet_
  8. Guck mal hier : https://docs.unity3d.com/ScriptReference/GameObject.html Unter den Static Methoden findest du Destroy. Wenn du da mal drauf klickst findest du einige Beispiele. Da siehst du dann wie und was alles zerstört werden kann. Der normale Destroy-Befehl wird am Schluß eines Zyklusses vollzogen. Also alles was dann noch in der Update des Objektes zu tun ist, wird auch sauber gemacht. Du kannst also ein Gameobjekt, wenn dein Script eine Referenz daraf gebildet hat, von der Ferne zerstören, oder es sich selbst zerstören lassen. So kann das Objekt, wenn es zerstört wird, z.B. selber noch ein Explosions-Objekt instanzieren, welches sich wiederum auch selber zerstören kann. Es gibt auch noch das DestroyImmediate, was ein Objekt sofort zerstört. Also auf der Stelle! Das solltest du aber nur Nutzen wenn du Editordinge machst, sonst nie!!! Im Spiel würden dann nämlich Referenzen zu diesem Objekt nicht gelöscht werden und dann wird es unweigerlich irgendwann zu Fehlermeldungen und evtl. zum Crash kommen. Also einfach nur das Destroy nutzen.
  9. Fein! Aber noch mehr Hitpoints? Weiss ich nicht...
  10. Komisch. Dieser Quest Display Clone ist dein Prefab? Hast du mal geschaut, ob der Skalierungsfaktor des Clones noch bei 1,1,1 steht? Das ist nur so ins blaue gedacht, aber ich habe die Erfahrung gemacht, dass gerade der Skalierungsfaktor gerne mal auf 0,0,0 geht, wenn man UI Elemente von einem Überobjekt nimmt und in ein anderes Überobjekt schiebt. Das kan alles mit dem dynamischen Skalieren des Canvas zu tun haben, welches ja zur Laufzeit geschieht. Da zu sein scheint jedenfalls alles. Das Textobjekt ist da und mit richtigen Werten gefüllt. Die Frage ist nur, warum man es nicht sieht. Ist es an anderer Stelle oder ist eben der Vatter auf 0 skaliert.
  11. So ganz kann ich dir nicht folgen, aber es scheint so zu sein, dass es das Generieren ist, welche die Probleme bereitet, weil du das wohl von dem Verwaltungsscript aus anstuppst. Wie wäre es, wenn diese Teilbereiche sich selber organisieren sobald sie aktiv werden? Das ginge sehr gut mit OnEnable(), weil das immer aufgerufen wird, sobald das Script enalbled wird. Und es wird immer dann enabled, wenn das Gameobject aktiviert wird. Es ist immer eine Frage des Designs. Entweder hat man ein Objekt (Verwalter), welches andere Objekte (Sklaven) kennt und ihnen sagt, was zu tun ist oder sie sogar aktiv verändert. Oder man hat ein Objekt (Anzeiger) welches nur Infos bereitstellt und die anderen Objekte (Autonome) organisieren sich aufgrund der Informationen komplett selbst. Beide Wege haben Vor- und Nachteile.
  12. Hi! Die Frage ist, was du mit aktualisieren meinst. Willst du ne Grafik oder einen Textaustauschen? Das sollte auch im nicht akitven Element funktionieren, wenn du ds von Außen, also einem anderen Script machst und eine Referenz zu diesem UI Element besteht. Also: Ein Script hat eine Referenz zu einer Text Komponente. Also eine Text Variable (nennen wir sie mal myText). Diese Variable muss gefüllt sein damit es geht. Ist die Variable public, kannst du einfach die Text Komponente im Inspector auf die entsprechende Variable fallen lassen. Jetzt kennt dein Script das Element, egal, ob das Objekt aktiv ist oder nicht. Es könnte auch sein, dass du nur das Gameobjekt kennst, welches du ja per SetActive schaltest. Dann suchst du halt in diesem Gameobjekt nach der Textkomponente und weist sie einer Variable zu. myText= DasObjekt.GetComponent<Text>(); Nun könntest du im Script ganz einfach zu irgendeinem Zeitpunkt sowas tun: myText.text= "Test"; Die Textkomponente hat jetzt in seinem Textfeld diesen Text bekommen. Mit Grafiken geht das genauso. Alles was du kennst kannst du verändern. Du musst es nur vorher kennen. Ist ein Objekt deaktiviert, findest du es nicht zur Laufzeit und kannst keine Referenz dazu bilden. Ist die Referenz aber schon da, dann kommst du auch da ran.
  13. Moin! Du willst also deine UI auf der Plane anzeigen und die Plane ist ein 3D Objekt im Raum, die deiner Hand folgt. Kein Problem. Zum Testen machste mal eine einfache neue Szene und Erzeugst so eine Plane und richtest die So aus, dass du sie mit der Kamera im Game View sehen kannst. Die brauchen wir gleich. Jetzt erzeugst du ein Canvas. Da stellst du erstmal gar nichts ein. Aber wenn du dir die Eigenschaften im Inspector anschaust, dann siehst du, dass der Canvas im Render Mode auf "Screen Space Overlay" eigestellt ist. Alles was demnächst an UI Objekten dem Canvas untergeordnet ist, wird wie eine Folie auf die Kameralinse gepatscht. Nun da der Cancvas da ist erzeugst du einfach 4 UI Images. Denen brauchst du keine Textur geben, weil wir wollen einfach nur die Dinger sehen und da reicht es, dass sie einfach weiß sind. Schiebe die 4 Images an unterschiedliche Positionen, Einfach so dass es wie ne 4 auf nem Würfel aussieht. Soweit alles gut. Du solltest deine Plane irgendwo im Bild sehen und natürlich auf die 4 weißen Quadrate. Jetzt schaltest du den Canvas im Render Mode auf "World Space" um. Je nachdem, wo deine Camera im Raum liegt und wie sie ausgerichtet ist, siehst du die UI Elemente weiterhin, oder eben nicht. Macht nichts. Weiter gehts. Ein Canvas, ist ein GameObject, welches du im Raum bewegen kannst. Du kannst es auch anderen Objekten unterordnen! Und das tust du jetzt. Ordne den/die/das Canvas der Plane unter und stelle im Inspector die Rect Transform Koordinaten auf 0,0,-0.5 ein. ( Z ist also etwas nach vorne geschoben). The Canvas liegt jetzt genau auf deiner Plane und wahrscheinlich sind die UI Elemente jetzt riesengroß. Das macht aber nichts. Das kann man einstellen. Im Inspector vom Canvas siehst du die Bereiche Rotation und Scale. Die Werte bei Rotation sollten auf 0,0,0 stehen. Falls es nicht so ist, dann stelle sie so ein. Im Bereich Scale stehen jetzt irgendwelche Werte. Die musst du wahrscheinlich verkleinern. Aktivier dafür die Klammer vor den Werten (Das ovale Symbol mit dem Schrägstrich) und stelle dann beim X sowas wie 0.001 ein. Nur mal zum Test. Alle 3 Werte sollten sich jetzt verändert haben und deine UI sollte jetzt viel kleiner sein und auf deine Plane passen. Welchen Skalierungsfaktor du jetzt wirklich bruachst, kann ich nicht sagen. Das findes du aber raus. Kleine Info noch: Die Werte für Width und Height am Canvas zu ändern bewirkt nichts. Bei den UI Elementen innerhalb des Canvas macht das was aus. Aber der Canvas selbst ist ein Imaginäres Dingen, was jetzt lediglich Koordinaten im Raum und einen Skalierungsfaktor im Bezug zum Vaterobjekt hat. Dein Canvas ist jetzt also Kind der Plane und die Elemente schweben leicht über der Plane. Wenn du diese Plane im Raum bewegst oder drehst, werden die UI Elemente mitgenommen. Das sollte in etwa das sein, was du haben willst. Um jetzt mit den UI Elementen interagieren zu können, musst du die entsprechende EventCamera in den Slot legen. Wie das da bei deinem VR Dingen ist, weiß ich leider nicht. Da bin ich raus! Du solltest jetzt aber alles so hinkriegen, wie du es willst.
  14. Du kannst dem Canvas sagen, wie und wo er sich darstellen soll. Du has jetzt Screen Space Overlay aktiviert und musst auf World Space unschalten. Da sind dann noch einige weitere Einstellungen zu machen um die UI Elemente richtig zu positionieren. Aber dazu gibt es zum Glück viele Tutorials im Netz. Such mal bei Tante Google mit den Schlüsselwörtern unity 3d world space canvas
  15. Ja! Das fügt sich besser ein und hat trotzdem kaum an Qualität verloren. Ob es mit den Skys vom Assetstore besser wäre? Weiss ich nicht. Denn dein Spiel, so wie es jetzt aussieht, ist ja "nicht" auf eine kleine Farbpalette ausgelegt. Wenn du da jetzt einen Sky einfügst, der nur wenige Farbabstufungen beinhaltet, würde sich das wahrscheinlich mit dem Rest beißen...vielleicht aber auch nicht... Andererseits hast du bei den Paralax-Skys, die im Paket mit drin sind, noch mal ein paar Ebenen mehr. Und das könnte wiederum noch mehr Tiefe bringen. Tja, ich bin da wohl keine große Hilfe!
  16. Gut! Aber für ein wenig Kritik ist inzwischen Zeit. Also: Das Spielprinzip ist gut. Da ich schon recht alt bin, kenne ich sowas natürlich schon. Es ist aber ein zeitloses Prinzip, welches auch heute noch Spaß macht. Deine Spielwelt ist echt gut arrangiert und richtig klasse finde ich den Übergang des Hintergrundes. Ich musste mir das Video 2 Mal ansehen um zu erkennen, wie du von dem bewaldeten Bereich wieder zum Himmel kommst, wenn du immer weiter runter gehst. Das ist super gelöst! Die Auswahl der Gegnertypen finde ich ach toll (wobei es mir jetzt nicht um die Grafiken, sondern um die Typen geht). Nett ist auch, dass man nach einem Abschuss immer auch das kleine Figürchen einsammeln muss, weil der Gegner sonst wieder aufersteht. Dass es da diese Portale gibt, die neue Gegner entstehen lassen, ist auch gut. Du hast einen Doppelsprung drin, kannst dich hinlegen, kannst neue Waffen finden und sie dann selber auswählen und außerdem gibt es Heilungskisten. Sehr gute Dinge für so ein Plattformer-Shoot-em-Up. Es gibt aber auch negative Dinge, die du sicherlich selber weißt. Trotzdem will ich mal schreiben, was ich so sehe. Zu allererst fehlt mir natürlich der Sound. Geräusche sind unheimlich Wichtig und können helfen sich zurecht zu finden. Ich weiß, du baust das noch ein. Trotzdem solltest du längst damit angefangen haben. Beispiele: Wenn du von einem Gegner getroffen wirst, dann wird dein Sprite leicht transparent. Ein geeigneter Sound würde dich aber viel besser warnen, denn wenn du im Getümmel auf die Gegner achtest, dann fällt das Transparente nicht so auf. Zum Ende hin warst du auf der Suche nach den letzten Gegnern. Würden die Gegner geräusche von sich geben, dann könntest du sie leichter orten. Gerade wenn du den 3D Sound nutzt. Dann weisst du, dass er rechts oder links von die ist und du weisst, wegen der Lautstärke, wie weit er weg ist. Aktive Portale könnten summen und wenn ein Gegner etsteht, könnte ein Beamsound kommen. Inaktive Portale, wenn der Zähler auf 0 steht, wären dann ohne Sound. Wobei ich persönlich die Portale aus dem Spiel nehmen würde, wenn da nichts mehr kommt. Du hast ja ganz zu Beginn geschrieben, dass du die Grafiken aus dem Assetstore hast. Ist ja nicht schlecht. Aber du solltest evtl. etwas anpassen. Die Pixeldichte sollte auf jeden Fall nah beieinander sein. Wenn du die Grünen Plattformen mit den grauen/silbernen vergleichst, siehst du sofort was ich meine. Entweder sind die Grauen zu grob oder der Kontrast ist zu hoch. Ich kann das nicht genau im Video erkennen. Wenn die Pixel passen, dann solltest du die Grauen etwas weichzeichnen. Die Wolken mit Sonne vom Hintergrund sollte auch pixeliger gestaltet werden und sich somit mit dem Rest verbinden. Die sind mir viel zu realistisch. Deine Gegner sind von Stil her ziemlich unterschiedlich. Manche wirken eher Comic-haft, Wie der Gelbe, das Skelett oder der Geist, und andere wirken erwachsener, wie die lila Fledermaus und die Blobs. Der Drache fällt komplett aus der Rolle. Die Hüpfbewegung macht mich fertig! Also irgendwie ist in deiner 27ten Dimension alles möglich. Und wenn ich jetzt den Jungen dazu ansehe, dessen Sprite als einzigstes eine schwarze Outline hat, dann nimmt das etwas von der Stimmigkeit. Die Sprung-, Fall- und Liegeanimationen des Helden sind auch relativ einfach gehalten. Er könnte etwas mehr Dynamik gebrauchen und er sollte beim Liegen nach vorne gucken. Das ist natürlich Kritik auf hohem niveau, denn es sind nur Kleinigkeiten. Nimm es dir also nicht zu sehr zu Herzen. Aber vielleicht ist ein Blick eines Anderen ja inspirierend. Also: Schön weiter machen!
  17. Wo änderst du denn die JumpForce? Im Script direkt, oder im Inspector? Falls du das im Script tust, wird es keine Änderung geben, denn da die Variable pubic ist, hat sie einmalig den Wert gesetzt und ab dem Moment ist der Wert im Inspector relevant. Nur wenn du dort den Wert änderst, wirst du auch eine Änderung in deiner Force bekommen. Wenn das nicht das Problem ist, dann weiß ich's auch nicht. Mir ist da jetzt kein Fehler im Bezug auf die jumpForce aufgefallen.
  18. Ich habs bei mir getestet und da passiert das nicht. Aber ich nutze andere Physikwerte in meinem Projekt. Es ist so, dass der physikalische Prozess über einen eigenen Takt verfügt. Das ist der Fiexed Timestep, den du unter Project Settings - Time finden kannst. Er ist auf 0.02 voreingestellt, was 50 mal pro Sekunde entspricht. Wenn deine Kugel jetzt nach unten fällt, dann tut sie das nicht fließend, sondern alle 0.02 Sekunden wird errechnet wo sich die Kugel nun befindet und da wird sie dann hin gesetzt. Nicht geschoben! Gesetzt! das bedeutet, dass alles was sich auf dem Weg von jetzt, bis zu nächsten Time Step befindet nicht erkannt wird. Wenn jetzt eine große Kugel mit großem Collider auf eine Plane fällt, die einen ganz feinen Collider in der Höhe hat, dann wird zwar auch jetzt nicht der Punkt, wo sich beide Kollider gerade so berühren, erreicht, die Kugel wird sicherlich etwas in den Collider eingedrungen sein und dann von der Physik ein Stück zurück geschoben werden, aber das lässt sich von der Physik gut berechnen und in die richtige Richtung schieben. Bei deiner kleinen Kugel ist der Collider wahrscheinlich viel weiter eingedrungen. Z.B. bis knapp zur Hälfte. Jetzt bekommt die Physik ein Problem, denn welche Seite der Kugel hat jetzt den Kontakt verursacht? Die Physik glaubt jetzt möglicherweise, dass es icht nur unten, sondern auch vorne geschehen ist und bouced dann die Kugel in die falsche Richtung. Würdes du die Kugel von weiter oben fallen lassen und sie somit länger beschleunigen lassen, wird es sogar passieren, dass die Kugel durch die Plane durchflutscht. Weil eben noch über der Plane und im nächsten Zyklus schon darunter! Was kannst du machen? - Gib der Plane auf jeden Fall einen dickeren Collider, oder nimm gleich einen Cube. - Ändere auf jeden Fall die Collision Detection des RB's von Discrete auf Continuous oder Continuous Dynamc. ( Kostet etwas mehr Rechenleistung führt aber zu genaueren Ergebnissen) - Verringere die Fixed Timestep z.B. auf 0.01 . Dadurch wird die Physik doppelt so oft berechnet und dadurch genauer. Das kostet natürlich auch doppelt so viel Rechenleistung. Ist aber auch kein Problem, wenn nur wenige RB's im Spiel sind. Ich baue virtuelle Flipper und bei mir ist die Fixed Time auf 0.007 eigestellt. Ich habe außerdem vor Jahren schon bemerkt, dass große physikalische Objekte viel weniger Probleme bereiten als kleine Objekte. Aus diesem Grund sind meine Flipper 10 mal größer als ein Original. Eine Kugel, die normalerweise nur 2.7 cm groß ist, ist jetzt 27cm groß. Weil durch die Größe die Physik aber anders wirkt ( also optisch), habe ich die Schwerkraft erhöht. Nicht ganz um den Faktor 10, aber trotzdem so weit, bis der Kugelfall realistisch aussieht. Sowas kannst du also auch mal probieren. Alles einfach etwas gößer bauen. Ich denke, jetzt bekommst du die Physik in den Griff.
  19. Tja, ohne Tests wirst du es nie erfahren. Aber selbst wenn du es testest, dann gilt das nur für dein System. Ein anderer Spieler mit anderem System wird andere Werte bekommen. Ich würde dir empfehlen, dass du bei deinem Textursheet bleibts, weil es für dich einfacher zu handhaben sein wird.
  20. malzbie

    Weihnachten 2024

    Das wünsche ich auch! 🌲 Familie war gestern schon da und morgen kommt vielleicht mein Bruder noch mal rein. Der Rest des Jahres ist frei. Ich werde nix arbeiten und einfach mal nur Dinge tun, wo mir sonst die Zeit für fehlt. Ich werde z.B. die Zeit zwischen den Jahren nutzen, um das upgedatete Cyberpunk zu zocken. Hab ich mir fest vorgenommen! Lasst es euch gut gehen!
  21. Hi! Genau kann ich es nicht sagen, weil ich ja nicht weiß wie Unity intern die Dinge berechnet. Aber eigentlich ist es in deinem Fall egal. Vom Speicherplatz her, könnte es etwas weniger kosten, wenn du eine große Textur nutzt. Das Einladen in den Speicher könnte auch etwas schneller gehen. Aber von der Performance her sollte es keinen Unterschied machen. Denn entscheidend ist ja, wieviele Materialien du nutzt und ob sie sich batchen lassen, also zu einem Objekt zusammenfügen lassen, damit nur einmal Beleuchtung und Schatten berechnet werden müssen. Aber selbst wenn du jetzt nur ein einziges Material für deine Objekte erstellst, in dem die große Textur drin liegt, die du dann zur Laufzeit oder auch nur beim Start den Texturbereich verschiebst, wird eine Instanz aus diesem Material. Sie ist somit eigenständig und dann ist es eigentlich genau so, als wenn du viele Materialien mit kleinen Texturen erstellt und den Objekten zuweist. Ich bin der Meinung, dass der Unterschied so gering sein wird, dass du dir darüber keine Sorgen machen musst. Nimm das, was für dich am besten ist.
×
×
  • Neu erstellen...