Jump to content
Unity Insider Forum

MaZy

Members
  • Content Count

    592
  • Joined

  • Last visited

  • Days Won

    22

Everything posted by MaZy

  1. Ich habe nicht verstanden wo dein Problem liegt. Wo brennst denn?
  2. MaZy

    Shadow Bug

    Es gibt zwei Dinge die das verursachen können. Mesh. Das Tier hat zum Beispiel auch solche Lücken. Das Problem hab ich z.B. gehabt, wenn ich MagicaVoxel benutzt habe. Dort waren sehr viele Flächen. Einzige Idee war einfach wo anders nochmal zu exportieren und dabei das Model zu optimieren (automatisch). Ansonsten Lights, Mal normal bias runter drehen.
  3. Ja hab tatsächlich mittlerweile Rigidbody genommen.
  4. Wenn du meinst, dass ein Auto einen weiteren und größeren Boxradius hat, ja könnte man, aber bin kein Freund davon, wenn andere Objekte die Arbeit von anderen machen ^^. Ebenfalls geht das auch bei dem Verfolger, aber irgendwie fand ich hier Raycast passender. Aber ist eigentlich gute Frage, welches allgemein besser wäre.
  5. Ich prototype gerade ein Spiel. Folgendes sieht man in dem Gifv: https://i.imgur.com/rvjO3aM.gifv Links ist ein Rigidbodyobjekt mit Masse von 5000. Rechts ein CharacterController und Rigidbody kann CharacterController nicht schubsen. Ist das nicht möglich? Ich benutze MovePosition beim Rigidbodyscript.
  6. Moin. Normalerweise, wenn ein Gegner den Spieler verfolgt lässt man ihn ab bestimmten Distanz stoppen und angreifen (zu mindest hab ich das so gemacht). Wie macht man das bei Objekten, die nicht an allein Seiten gleich breit bzw. lang sind, zum Beispiel Autos, Züge oder sogar Laster? Oder noch krasser wie bei Zombie spielen, wenn Zäune drum rum sind, wie wissen sie dass man es angreifen kann mit Verbindung NavmeshAgent usw. EDIT: Könnte das mit raycast lösen fällt mir gerade ein.
  7. Man sagt allgemein so viele Cubes erstellen ist nicht gut. 17500 Cubes * 8 Ecken = 140.000 Vertices. Wenn du Culling benutzen tust, muss Culling noch diese Vertices durch loopen. Weiß jetzt nicht wie das aber exakt abläuft. Daher am besten den Voxel Technik benutzen. Hab damals das hier verwendet: http://studentgamedev.blogspot.com/2013/08/unity-voxel-tutorial-part-1-generating.html Zum Occlusion Culling. Ich glaube das funktioniert nur bei Dingen in der Scene, die auch Occlusion Static eingestellt haben. Weiß gar nicht, ob es dynamisch geht, also wenn du die Welt generierst und dann. Musst nur noch baken und dann ist das eigentlich fertig. Ups, hab erst gedacht, willst wissen wie das geht. Also kannst theoretisch selbst machen. Im Discord gibt es jemanden, der sowas ähnliches gemacht hatte, aber dennoch Probleme mit Performance hatte. Im Prinzip fragst du einfach nur ob, ob die Kamera etwas sehen kann, wenn nicht ausblenden (MeshRenderer). Kannst dazu OnBecameInvisible und OnBecameVisible benutzen. Ich weiß nur nicht, ob das auch gecalled wird, wenn man meshrenderer deaktiviert hat.
  8. Das habe ich schon verstanden. Ich hab ja auch allgemein darüber geschrieben und zusätzlich noch die Ads erwähnt, da man dort noch mal die Privacy einstellen kann. Finde aber immer noch, dass man direkt am Anfang fragen sollte. Also ich hab mich da nicht eingelesen, da ich nur einfach das Verlinkt habe und die User sich das selbst durchlesen können aber, wenn die ID zugeordnet werden kann, zum Beispiel, wo man sagt "ah die ID hat heute das Spiel länger gespielt" oder "ID hat x mal das Spiel / Unity heute gestartet" ist das ein Fall für die DSVGO und nicht mehr wirklich anonym und tatsächlich gelt das als personenbezogen, weil man da einordnen kann wer was macht. Auch wenn man jetzt nicht weiß wer wirklich dahinter steckt. Wenn es aber eine z.B. länderspezifische Gruppierung ist, also wo man sagt "In Deutschland wurde Unity in diesem Monat insgesamt 3 Millionen mal gestartet, die version x y z", dann gelt das als anonym. Wenn wir Analytics benutzen sammeln wir auf jeden Fall für uns alles Anonym. Ich will hier nichts falsches sagen, aber ich glaube, dass man das sogar ohne Zustimmung machen darf (also beim Starten des Spiels), aber dennoch informieren MUSS und darauf hinweisen sollte. Da senden wir ja nur zum Beispiel sowas wie "Scene1 mit einem Score von x wurde beendet". Dabei erfasst man keine personenbezogene Daten. Das Privacy Plugin ist leider veraltet und es kommt eine Fehlermeldung. Bei meinem alten Projekt ist es als Button noch da (ist dasselbe Projekt wie das Bild oben). Man braucht diesen Plugin nicht mehr, weil wohl Analytics sowas schon beinhaltet. Muss ich mal eigentlich genauer anschauen und mal da umsteigen.
  9. Also paar Sachen von malzbie ist nicht richtig. Du bist schon verantwortlich dafür, da es durch dein Service zum Daten sammeln kommt. Sonst könnte Facebook auch das gleiche sagen und einfach mit einer anderen Firma arbeiten. IP-Adressen sind personenbezogen. Seit 2017 sogar endgültig durch Bundesgerichtshof entschieden. Davor war mal so und mal so gewesen. Durch IP-Adressen kann man sogar Wohnort (die Stadt) und wenn man tiefer zugreift auch sensiblen Daten rauskriegen. Also ich sag mal so. Nimmt das nicht locker. Klar bei kleinen Leuten ist jetzt nicht so dramatisch, aber man weiß nie. Bespiele: Ein Kumpel von mir wurde vor ÜBER 10 Jahren wegen eines Liedes angeklagt und zwar wegen Raubkopie. Und er ist mein Nachbar gewesen. Mich hat es nicht erwischt, aber ihn hat es durch nur eine mp3 download erwischt. Man weiß daher nie ^^. Da er 17 war, hatte er keine Strafen bekommen. Ich war 18 und für mich wäre es nicht gut ausgegangen. Mein Vater hatte damals eine Online-Radio-Server. Der Stream, also wo man das hören konnte, war an einer Seite gebunden, wo Online Chatter unterwegs waren (war eigener IRC Server). Da ja keine Lizenz zu dem Lieder gab, hat der Betreiber der Seite natürlich eine Hohe Geldstrafe bezahlen müssen. Mein Vater hatte da keine Verantwortung und hat keine Probleme bekommen, obwohl die IP des Radiostreams zu mein Vater führt. Ergo der Betreiber war wieder verantwortlich. (Das lustige ist, dass ich diesen Server verwaltet habe, da mein Vater 0 Ahnung von sowas hatte XD. Ich lernte auch dadurch Linuxserver kennen.) Zum Topic: Soweit ich weiß ist der Spielherausgeber für das Datenschutz des Users verantwortlich. Wichtig ist nur, dass, bevor alles gesammelt wird erst eine Zustimmung des Users gebraucht und dazu auf jeden Fall die Privacy Policy (also die Datenschutzerklärung) verlinkt sein. Sie müssen das durchlesen. Ob sie am Ende das tun oder nicht ist nicht dein Problem. Hauptsache man sagt das denen. In dem Text sollte alles zum Sammeln stehen. Auch das Unity sammelt und wie man die Daten löschen lassen kann. Wenn es Anonym gesammelt wird gibt es da kein Problem, da ja nicht personenbezogen ist. Muss man aber natürlich trotzdem erwähnen, dass Daten anonym gesammelt werden und auch wofür. Bei mir hab ich bei meiner App so gemacht, dass erst ToS und Privacy Policy akzeptieren muss und danach direkt erst mal frage wie alt die Person ist (weil google im Play Store das mir vorschreibt) und gleichzeitig auch, ob er erlaubt personenbezogen Daten zu speichern. Bei Minderjährigen ist klar, darf man KEINE personenbezogene Daten sammeln. Später soll auch möglich sein, dass immer noch zu ändern. Es ist nämlich zu mindest in EU Pflicht, dass man die Löschung und Änderung erlauben muss. Auch du muss im Script an Unity weiterleiten, dass die Person minderjährig ist und somit nicht sammeln darf. Dann werden nur noch wichtige Sachen gesammelt. Bei Unity Ads zusätzlich sagen sie zwar, man braucht da nicht viel tun, weil, wenn die Werbung angezeigt wird, kann man dort Einstellen, was personenbezogene Daten angeht, aber ich würde mich darauf alleine nicht verlassen. Ist meiner Meinung nach komisch, dass sie das sammeln und dann erst fragen, dürfen wir sammeln? ^^. Hier ein Bild zusammen geschnitten wie ich das gemacht hab. Wenn man unter 13 Jahre angibt, dann geht dieser Hackchen weg. Finish button ist erst mal grau und nicht anklickbar (ich war hier nicht im playmode deswegen ist es nicht grau).
  10. Ich glaube auch deine Aufnahmeprogramm macht auch nicht wirklich mit: Anscheinend benutzt du Renderpipline HD und die Shader machen Probleme. Weiß nicht, ob es vllt mit der version 2019.1 was zu tun haben könnte. Sagst ja, dass es beim Teamkollegen auch passiert. Würde mal die Lightnings baken. Im Bild ist ein Hacken bei Decals drin. Vllt mal rausnehmen und damit mal probieren. Ansonsten anderen Materialshader mal ausprobieren. Als letztes kann ich nur sagen Unity mal updaten. EDIT: Transparent script könnte höchstwahrscheinlich dies verursachen.
  11. Resource.Load kann nur Unity bekannte Types laden. .obj oder .fbx bzw models allgemein sind das nicht. Daher mache zu erst daraus ein Prefab und danach kannst du es Laden. EDIT: Muss mich korrigieren. Hab da mist gelabert, weil ich dich falsch verstanden habe. Ein Obj kannst mit Resources laden, wenn du ein Resources Ordner und da rein packst. Danach kannst du so laden GameObject 3dmodelResource = Resource.Load<GameObject>("3dmodel); Instantiate(3dmodelResource); Du muss also angeben, was du lädts, gameobject, mesh, texture usw. Den Pfad gibst du ohne "Resources" an. Also wenn es im Resources/mymodels/avatar.obj ist dann einfach mymodels/avatar eingeben. Ich empfehle das dir aber NICHT! Weil man da auf Speicherprobleme kommen kann. Also mehr Ramspeicher wird benutzt. Es ist besser wenn du aus deinen 3d models einen Prefab machst und dann in deinem Script eine List bzw Array zu machen, und da kannst du all deine Prefabs reinpacken und von da aus laden. Instantiate(mymodels[0]); Das hast du dann nämlich auch im Laufzeit erstellt
  12. Bill Gates sagte eins: "I choose a lazy person to do a hard job. Because a lazy person will find an easy way to do it.". Ich lebe tatsächlich nach dieser Prinzip. Ich versuche immer alles schneller und leichter zu machen. Und darum hier mal ein kleiner Code von mir, welches ihr wahrscheinlich auch ab und zu brauchen könntet. Hier ist ein Script welches OverlapCircle etwas erweitert. Öfters habe ich das Problem gehabt, dass ich OverlapCircle einsetze, aber dann nochmal durch loopen muss um zu schauen, ob ich die richtigen Collider2D überhaupt gefunden habe. Aber warum das nicht so bauen, dass ich direkt die Richtigen bekomme? https://gist.github.com/MaZyGer/b4c45395bd6a5d06722a0eecf71c850e Beispiel wenn du eine Granate wirfst und beim Aufprall noch Monster suchen willst, die aber auch noch am Leben sind (um denen Schaden hinzuzufügen): List<Monster> monsters = new List<Monster>(); int count = OverlapCircle<Monster>(Vector2.zero, 10f, new ContactFilter2D() { }, monsters, m => !m.IsDead ); // Andere Möglichkeiten int count = OverlapCircle<Monster>(Vector2.zero, 10f, new ContactFilter2D() { }, monsters); int count = OverlapCircle<Monster>(Vector2.zero, 10f, new ContactFilter2D() { }, monsters, c => c.GetComponentInChildren<Monster>()); int count = OverlapCircle<Monster>(Vector2.zero, 10f, new ContactFilter2D() { }, monsters, c => c.GetComponentInChildren<Monster>(), m => !m.IsDead); Der Code im Link wird vllt in der Zukunft erweitert. Je nachdem was ich brauche werde ich hinzufügen.
  13. Benutzt du irgend ein Algorithmus? Zum Beispiel AStar oder Djkstar? Ansonsten ist es schwer dir zu helfen, wenn du eigenen kreieren möchtest. Ich kann z.B. nicht nachvollziehen was du da machst bei DistanceBteweenTwo. Das hört sich wie die Berechnung von AStar an, aber inhaltlich sieht das für mich komisch an.
  14. Du solltest dich wirklich mit Programmierung beschäftigen. Das sind kleine Rechtschreibfehler die man sogar mit bloßen Augen sehen kann. Das muss man schon drauf haben meiner Meinung nach. Ansonsten kommst du bei jede Kleinigkeit und das gar nicht gut. Ich meine da steht z.B. 1f statt if und das ist sogar was universelles.
  15. Wahrscheinlich Mono selbst ist nichts anders um die Möglichkeit zu geben Plattform unabhängig zu programmieren, das mit C#. Ein Beispiel, ich habe ein Server programmiert, welches mit C# geschrieben wurde und welches sogar einen .exe beinhaltet. Das Programm läuft sowohl in Linux aber auch im Windows. Mittlerweile kann man sogar die Datei direkt starten. Früher musste ich noch mono zusätzlich ausführen. Früher war mono nicht für Systeme gedacht. Eigentlich nur windows. Kurz: Mono hilft die diese Programme die programmiert wurde auszuführen, zu compilen (ja auch in Linux kann man sie compilen und ausführen). Net Standard definiert, welche Libraries in der Programmierung benutzt werden können. Beispiel Netstandard 2 die framework 4.6.1 und die netstanard 1 wäre framework 4.5. Da sind auch aber andere Pakete dabei. Nicht nur Framework. Z.B. Core. Net Framework waren nicht beabsichtigt auf anderen Projekten zu funktionieren. Durch Xamarin und Mono wurde was neues erschaffen, wo man dann für anderen Plattformen erweitern konnte. Net Core benutzt KEIN mono. Wurde bewusst so vom Libraries aufgebaut, dass man auch für andere Plattformen verwenden kann. Ich habe jetzt nicht selbst benutzt, aber ich vermute mal, dass da sowas gibt wie if application is linux then usw. So wie ich auch verstanden habe hat Core auch keine libraries für Interfaces. Sprich kein Fenster wo man navigieren kann (Windows forms, WPF usw). Es ist der originale Mono zu mindest in der API Bereich. Zu modifizieren und zu ändern wäre nicht gut, dann müssten wir auch die Libraries dafür runterladen. Z.B. müsste ich irgendwas zusätzlich auf meinem Linux installieren, damit auch Unitys Version funktionieren soll. Aber der Standard Mono läuft. Unity ist ein Editor. Unity benutzt mono vom Microsoft. Natürlich! Man kann derzeit zwischen net 2.0 standard under net 4.x auswählen. Das sind eigentlich keine Versionen sondern Paketzustellungen. Früher konnte man auch Net 3.5 auswählen. Wichtig ist hier zu unterscheiden, dass wenn dahinter standard steht, dass es nicht das gleiche ist wie, ohne Standard. Standard heißt, dass da bis zu bestimmte libraries, versionen usw enthalten sind. beispiel Framework, Core, Mono usw. Die Schreibweise ist um das zu erkennen ist: Net 4.x bedeutet, dass höchst mögliche soll erlaubt werden beim Programmieren. z.B. .Net Framework 4.7.2 usw. Unity Editor natürlich muss das unterstützen. Sonst geht es nicht. Siehe oben Unity hat ist noch nicht bei der Framework Version. Deswegen geht es noch nicht. Ich glaube standard 2.1 wird das nicht werden. Wird eher immer noch net 4.x sein, da wie ich oben schrieb standard auch viele Sachen hat die wir aber nicht in Unity brauchen. Net 4.x sollte nur die Framework Version sein.
  16. Gibt es mehrere Möglichkeiten in deiner Situation. Du kannst wenn du etwas spawnen willst und die Position VORHER hast, kannst du deine Asteroiden durch loopen und abfragen. Kannst Abfragen, Asteroid A Größe und Position kombiniert abfragen, ob Asteroid B der gespawned der Punkt innerhalb Asteroid A ist. (Halt selber rechnen) Oder kannst Unity Physic benutzen was ich empfehle und Physics2D.OverlapCircle(newSpawnedAsteroid, radius, filter, colliders). Da kannst du überprüfen, ob da genau etwas steht. Man bekommt ne Zahl zurück.
  17. Ja das mit new() constraints kenn ich schon. Ich hab das bewusst so gemacht, weil wie ich oben geschrieben habe immer etwas davor getan werden muss bevor man neuen Object erstellt bzw. auch manchmal haben sie ein oder mehrere Parameter. z.B. EngineA.Settings.bla = 1 usw. Und dann new EngineA(). Die 3rd party libraries sind halt verschieden aufgebaut.
  18. Unity meckert aber ab bestimmte Zahlen ich glaube ab 50.000. Tatsächlich hab ich mal gehört, dass Eve Online so ähnlich arbeiten soll. Allerdings sind die "Levels" auf der selben Position nur die werden für bestimmte Spieler nicht angezeigt, weil sie dort sich nicht bewegen. Wie das Server technisch gemacht wurde kein Plan.
  19. Ich hab mittlerweile so gemacht, dass engine variable nicht mehr public ist. Hab so angepasst, dass man alles per Funktion machen muss, die man von der Abstrakten Klasse bekommt. Ich hatte hier ein Formulierungsfehler. Am Ende des Satzes fehlt ein "nicht" ^^. Hoffe war trotzdem verständlich. Aber deine Idee kann tatsächlich klappen. An diese Reihenfolge hab ich nicht gedacht. So hab es probiert. Also das klappt wunderbar. Muss jetzt nicht mehr engine variable jedes mal definieren. Also mein beispiel sieht so aus (der Code ist provisorisch geändert) public abstract class ClassAbstract<T> : ClassAbstract { protected T engine; } public abstract class ClassAbstract { public abstract void Do(string do); ... } public class EngineAHelper : ClassAbstract<EngineA> { public EngineAHelper() { engine = new EngineA(); } public override void Do(string do) { engine.Do(do); } ... }
  20. Also es ist schwierig zu erklären was ich vorhabe. Ich habe eine abstrakte Klasse ClassAbstract. Zwei weitere die sie erben ClassA und ClassB. ClassAbstract hat ein public abstract object engine { get; protected set; } variable, denn darauf möchte ich später bei ClassA ClassB zugreifen. Nun die Klasse ClassA und ClassB haben verschiedene Types für den engine variable. Sagen wir mal EngineA und EngineB. Die beiden Engines haben verschiedene funktionen und variablen. Beispiel kann der EngineA SetVar(var) machen während EngineB var[var] machen kann. Deswegen geht die einfache Benutzung von engine.SetVar oder engine.var[var] nicht. Nun war die Idee ich mache generic types. Also ClassAbstract<T>. Damit könnte ich das lösen aber jetzt kommt ein anderes Problem. Denn ich hab ein Manager, der eigentlich alle ClassAbstract als parameter angenommen hat. Nun das klappt bei ClassAbstract<T> nicht. So sieht der Constructor aus. public Manager(ClassAbstract a, params ClassAbstract[] a) Jetzt weiß ich nicht weiter, denn mich nervt es jede Klasse selber "engine" variable zu erstellen, weil man manchmal das vergisst. Alternativ kann ich GetEngine<T> machen und das casten lassen, aber finde ich doof. Ich kann auch den engine nicht private machen (um dann GetEngine zu benutzen), weil ich beim Constructor bei base() nochj nicht neue instance geben kann weil vorher im constructor erst paar Sachen geändert werden muss (bin davon abhängig, da es nicht von mir ist). Beispiel EngineA.GlobalSettings.tick = 1; new EngineA(); Sonst hab ich keine Idee mehr.
  21. Wenn du lernen willst bitte nicht in Unity . OOP wird sehr oft benutzt und daher zu empfehlen reine C# mit Console Projekte zu benutzen. Aber C# selbst kann man in Unity lernen.
  22. Nein, es ein Management System ist. Sie haben da einige Sachen eingebaut, die man für Menüs braucht. Man muss dabei fast gar nicht programmieren. Schaue dir dazu deren Videos an. Die haben fast für alle Bereiche ein Video. Seit heute haben die sogar ein Theme Manager drinne. Also zwischen Farbenthemen wechseln usw. Hab aber noch nicht getestet. Die Frage musst du mal wohl selbst stellen, warum du überhaupt nach etwas suchst? Was ist dabei dir wichtig? Mir war wichtig, dass ich eine Art Navigationssystem habe. Also dieses zwischen den Menüs hin und her springe, und das System weiß von wo ich hergekommen bin und wie ich zurück komme. Auch ebenfalls, dass ich Soundmanager habe um besser Sounds auszutauschen oder besser einzustellen und DoozyUI hat da die beiden Sachen. Falls du ein Ersatz willst wie z. B. den UIBuilder dann ist natürlich DoozyUI falsch. EDIT: Z.B. zu Thememanager. Sowas hab ich gebraucht. Am Halloween wollte ich z.B. das menü bissel danach gestalten. Und nach Halloween wieder normal darstellen. Hab mal angeschaut und deren Thememanager ist wirklich gut. Genau was ich gebraucht hab.
  23. Was Namensfindung angeht kann ich euch Tipps geben. Dies bezieht aber auf Spiele, die tatsächlich Erfolg haben sollen z.B. durch Steam. Man muss sich die Fragen erst mal stellen. 1. Hat das Spiel was einzigartiges? Wenn ja, dann auf keinen Fall so leichte Namen nehmen, wo man bei der Suche zisch andere Spiele findet oder ihr nimmt explizit den Namen, was das Besondere hervorhebt. Beispiele: Titanfall - Weil titane aus dem Himmel fallen Dota (Defense of the Ancients) - Weil man die Ancients verteidigen muss.. ist es zerstört, verliert das Team. Payday - Weil es darum geht, dass man im Spiel immer mehr Geld anhäuft. Portal - Weil man fast nur Portale benutzen muss um voranzukommen (hier also auch das Gameplay). Squad - Weil das Spiel hauptsächlich ohen Kommunkation nicht geht. Squadsmitglieder und Leaeder müssen untereinander kommunizieren sonst ist es verloren (wie in Reallife halt^^). Space Engineers 2. Irgendein "dummen" oder "lustigen" Namen Es gibt Spiele (oder auch Filme usw), die bewusst etwas Dummes oder Lustiges als Name nehmen, weil sowas wie Ohrwurm ist und auf den Ohren bleibt. Beispiel: Garry's Mod (weil der Entwickler Garry ist und die Firma heißt Facepunch). Pavlov VR Mehr fallen mir da gerade nicht ein. Aber bei Apps gibt es jede Menge sowas. 3. Einen einzigartigen Namen geben, aber nichts zum Content aussagt oder sehr sehr gering etwas aussagt. Sowas ist finde ich immer wieder toll, wenn es Namen erfunden werden, die gar nicht existieren. Und das macht das Spiel dann sehr besonders. Jeder von uns kennt z.B. Half-Life. Beispiele: Half-Life Rust Counter-Strike Stellaris (Das Wort aber bezieht sich aber auf Stellar und ist ne Mischung aus Latein) - Ist ein Weltraumspiel Just Cause Gothic Fortnite - Wobei hier der Name von Fortnight kommt und um Four Nights (also 14 Tage und Nächte) geht. Max Payne - Kann man auch zu Punkt 1 zuordnen, aber da geht es echt um diesen Charakter selbst und seine Story. Über Content wird hier nichts gesagt. Die Besonderheiten des Spiels ist ja nicht Max Payne selbst sondern die schönen Bullettimes. ANNO XXX - Die ganzen Anno reihen ^^. 4. Namen die einfach gefunden werden sollen. Manchmal nimmt auch Namen bewusst, dass man bei der Suche finden soll. Sowas empfehle ich nicht, weil man da schon sehr oft Namensverletzung hat. Ein Beispiel von mir. The revenge of the Space Invaders. - Geschützter Name Space Invaders. Auch wenn im Spiel um Invader und Space geht, darf man es nicht so verwenden. Was aber geht ist: Invaders from Space: The Revenge. Dot Color Switch - Color Switch geschützt. Dot switch color oder Switch dot color würde gehen. Oder ganz anderen Namen wie Dot color swap. Persönliche Meinung. Ich mag es gar nicht, wenn der Titel eines Spiels so bestimmt wird, was auch Gameplay / Content aussagt. Beispiel: Back to earth: Ist nicht interessant genug. Warum? Ich weiß ok sie waren von der Erde weg und wollen zur Erde zurück. Das war es auch. Anders wäre es aber mit einen interessanten Namen davor (einfach so mal spontan, auch wenn es sich kacke anhört). Hitstrikes: Back to earth - Hier würde man sich fragen, was sind Hitstrikes. Wieso wird das so genannt. Gibt es noch andere Spielreihen davon?. Ein Schluss Wort Garry Newman sagte: Was wenn "Mario" das Spiel einfach nur "Coin Grab" hieße. Niemand würde an das Spiel sich später erinnern.
  24. DoozyUI ist ein UI Management System mit unter anderem Nodes und NGUI ein UI Layout System. Du kannst in DoozyUI leichter und übersichtlicher Menüs miteinander verbinden. Es hat viele Sachen was man so braucht, aber vieles (für mich persönlich) fehlt da noch weiteres, aber die haben auch noch vieles vor laut ihrem Trello. Beispiel hab ich von meinem alten Projekt 2013 was alles noch auf GUI (GUILayout usw.) basierte neulich alles auf DoozyUI umgestellt. Musste also wenig programmieren: Muss zu geben, dass ich eigentlich eigenen UISystem gemacht habe, aber ich hatte für weiteres keine Lust mehr selbst zu machen. Da hab ich sogar die wichtigsten Dinge beachtet, was ich bei DoozyUI z.B. nicht hab. Diese Animation oben kann man mit einem GameObject nicht machen. Man braucht noch ein Parent der auch animiert werden muss. Aber das wird wohl noch bei DoozyUI kommen, denn da stand sie wollen möglich machen, dass mehrere Animation gehen soll und nicht nur einer. Was man so alles machen kann z.B.: Menüs (UIView nenne sie das) animieren (und dabei alles). Bezüglich Animation kann man einstellen, was vorher, nachher passieren soll. Nody - Menüs, Music und all die Abläufe werden mit Knotensystem eingestellt. Man verbindet sie zusammen und somit weiß man wohin man kann und wo man zurück kann. Soundmanager - Spielt da wo du brauchst music / sounds ab. Profile, für jede Animation, Sounds oder sonstiges gibt es ein Profil Sounds werden mit AudioMixer verknüpft. Wenn du z.B. UI Click sounds hast, dann hast du eventuell in AudioMixer auch UI drin. Somit werden diese Sounds je nach deinen AudioMixer Einstellungen übernommen. Und noch so einiges mehr (z.B.: Progression) Ich arbeite damit seit 2-3 Wochen und mir gefällt das soweit. Allerdings wie gesagt fehlen mir da ein paar Dinge. Beispiel haben sie da "Portale" gemacht. Bei Knotenpunkt kann ja leider passieren das man zu einem Punkt nicht kommen kann. Daher kann man da ein "Portal" machen womit man sofort dahin springt. Problem.. Drückt man z.b. Auf Options Button, springt mann immer in den Option rein, auch wenn man schon drinne ist. Also fehlt da so ne Frage wie "Ist man bereits in dem Node drin.. dann nicht weiter gehen) oder sowas. Bald kommen auch noch Themes. Damit kann man mehrere Profile erstellen und später die Farbe mit einem Klick anpassen. Hoffe auch Textures oder so werden unterstützt. Zu NGUI - würde vom kauf abraten. Warum? Unity UI ist fast so ähnlich. Ich meine der NGUI Entwickler hat sogar für Unity später gearbeitet. Bin mir aber nicht 100%ig sicher. Man sieht ja auch an den Bewertungen. Neben DoozyUI kann ich auch das hier empfehlen. https://assetstore.unity.com/packages/tools/visual-scripting/ui-graph-a-menu-system-for-unity-151846 Da sind sogar multiple animations vorhanden (was DoozyUI noch nicht hat).
  25. Nein, das habe ich doch auch nicht vor. Das ist doch mein Problem. Ich möchte ja nicht, dass es verändert, sondern, wenn ich aus dem aus dem Playmode rausgehe, genau so aussieht wie, als würde ich das Spiel gerade starten. Und hast ja gesagt gezeigt, wie man da vorgehen könnte. Ein Beispiel wäre z.B., wenn ich beim jeden Spielstart etwas abfragen möchte. Eine Art Bestätigung. Zum Beispiel "Dies ist eine Betaversion". Du drückst ok und es ist für das Spiel auf true gesetzt - du hast es gelesen und bestätigt. Starte ich das Spiel neu, ist es logischerweise wieder auf false und ich muss wieder bestätigen, dass ich darüber bescheid weiß. Doch im Editor kann ich das nicht machen, denn Editor lässt es auf true stehen und ich könnte als Entwickler total verwirrt sein, warum diesmal die Abfrage "Dies ist eine Betaversion" nicht mehr kommt. Das ist nur mein Problem. Speichern oder geänderte Dinge abgespeichert haben möchte ich nicht. Nur das es sich genauso verhalten sollte, wie im Standaloneversion auch, damit man da nicht durcheinander kommt, wenn man testet. Disclaimer: Das da oben war nur ein Beispiel und nicht, dass ich sowas vorhabe. Ich benutze hauptsächliche ScriptableObjects eher als Datenbank, wo Dinge nur raus gelesen werden.
×
×
  • Create New...