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

Hellhound

Members
  • Content count

    74
  • Joined

  • Last visited

  • Days Won

    2

Hellhound last won the day on March 31

Hellhound had the most liked content!

Community Reputation

7 Neutral

About Hellhound

  • Rank
    Advanced Member

Recent Profile Visitors

546 profile views
  1. Controll Settings in der neuen UI (C#)

    Spontan würde ich ein ScriptableObject für die Settings implementieren in der Du die Belegungsdaten hälst. Dies kannst Du auch zur Laufzeit ändern und das wird auch gleich über Unity Mechanismen persistiert. Für die Anpassung kannst Du dann ein Editor Script schreiben und ein UI Menü das die Werte ebenfalls anzeigt und anpassen lässt. Diese Werte werden dann von deinen Controllern ausgelesen und verarbeitet. Du müsstest allerdings etwas konkreter werden, was Du genau suchst und brauchst, damit wir hier mehr Details liefern können ...
  2. Unity Projekt Git-Ready machen

    Mal ne Frage am Rande, habt Ihr mal darüber nachgedacht ob Unity Collaborate nicht evtl. eine Alternative für GIT sein könnte? Ich selbst habe immer wieder Probleme mit GIT gehabt, da Dateien wie Zer0Cool es schon gesagt hat recht schnell gross werden können. Bisher bin ich mit Collaborate recht zufrieden. Bin allerdings z.Z. auch Einzelkämpfer ...
  3. Objekte mit einem Meneü versehen

    Beim Grass kann ich aktuell nicht helfen. Dafür solltest Du einen anderen Thread aufmachen. Was die 2D Menüs angeht ist das relativ einfach. Zum einen brauchst Du ein Canvas als Basis in der Scene und da kannst Du beliebig UIElemente plazieren. Damit solltest Du zunächst ein bissl rumspielen um ein Gefühl für die UI zu bekommen. Schau mal bei Youtube nach Unity UI tutorials, wie z.B. das hier. Es brauch ein bischen Übung bis man mit den UI Elementen klar kommt. Aber Du kannst es ziemlich weit ausbauen, hier mal ein Screenshot meiner aktuellen im Bau befindlichen UI. Ich würde für die Steuerung auf Events setzen. D.h. das Menü GameObjekt ist deaktiviert. Am Menü gibt es ein Skript mit Methoden z.B. für Show um es zu aktivieren. Diese Methode wird dann später durch ein Click Event am Objekt getriggert und zrigt dann das Menü an. Am Objekt brauchst Du dann ein Skript das in der Update Methode auf Mouse-Clicks reagiert und dann die Events triggert. Über die Unity UI kannst Du dann schön alles miteinander verknüpfen und bestimmen wer worauf reagieren soll. Klingt jetzt alles sicher sehr theoretisch und ist viel Input. Da Du grade erst einsteigst würde ich langsam anfangen, anschliessend kann man hier mehr Details liefern ...
  4. Objekte mit einem Meneü versehen

    Das kannst Du alles direkt mit Unity Core Elementen machen und brauchst eigentlich kein Asset kaufen, auch wenn es dafür diverse Lösungen gibt. Lediglich etwas Skripting ist erforderlich. Die Frage die Du Dir stellen musst, ist eher wie soll das Menü sein? 2D, Reactive, 3D am Objekt oder gar ein Mix? Dafür brauchen wir mehr Infos von Dir, dann können wir auch konkreter werden, was Du Dir, wo anschauen solltest ...
  5. Wie es ausschaut gibt es in Unity keine Möglichkeit beide Canvas-Typen gleichzeitig zu nutzen. D.h. sie können zwar gleichzeitig genutzt werden, dürfen sich aber nicht überlappen. Der Overlay-Canvas scheint immer die höhere Priorität zu haben. Und wenn, wie in meinem Fall, ein UIElement über dem 3D-Objekt liegt, wird in den dahinter liegenden Objekten kein Hit mehr ermittelt. Die Sort-Order der Canvas-Objekte hat scheinbar hier keine Wirkung. D.h. ich muss in meinem Fall sicherstellen, dass der Hit über dem 3DObjekt nicht blockiert. Das kann ich auf 2 Arten erreichen: Deaktivieren des Raycasters am Overlay Canvas (Bringt mir nichts, da ich ja noch die UIElemente im Overlay nutzen will) Hinzufügen einer Canvas-Gruppe auf dem überdeckenden UI-Element und hier explizit das Blocking der Raycasts deaktivieren Durch den 2ten Schritt erreiche ich, dass die unter dem Overlay liegenden UIElemente am WorldCanvas auf die Events reagieren, nun muss ich halt zusätzlich, klassisch am 3D-Objekt ein Eventhandler einbauen um hier auf Click-Ereignisse reagieren zu können, damit ich mein Objekt rotieren kann ...
  6. Ich habe aktuell das Problem, dass meine WorldSpace Canvas UI-Objekte nicht auf Events reagieren, solange ich im parallel verwendeten ScreenSpaceOverlay-Canvas den Raycaster nicht deaktiviere. Ich muss jedoch beide Canvas parallel betreiben können, da ich über die WorldSpace-Canvas Objekte Menüs, die im ScreenSpace-Overlay angezeigt werden sollen, triggern muss. Folgendes habe ich laut Google schon probiert, alles ohne Effekt: Unterschiedliche Sorting Order in den Canvas Objekten (WorldSpace 0, Overlay 1) Unterschiedliche Layer und Tags WorldSpace-Event-Camera (Eigentlich eigene) auf MainSpace gesetzt und vice versa. Canvas Groups für beide Canvas hinzugefügt Blocking Masks in beiden Raycastern auf Nothing gesetzt Ich habe mal Screenshots meiner aktuellen Konfiguration der Canvas-Objekte und der Objekthierarchie hinzugefügt (Der Raycaster im WorldSpace ist inzwischen wieder aktiviert, das war nur ein Test). Habt Ihr evtl. noch Ideen, wie ich beide zusammen zum Laufen bekomme?
  7. Position in RenderTexture auf Objektbasis ermitteln?

    Ich konnte das Problem lösen. Habe noch einmal auf Deinen ursprünglichen Vorschlag zurückgegriffen und die WorldSpace-Canvas Container genutzt, da ich es mit dem Overlay nicht lösen konnte. Habe im WorldSpace-Canvas für das Image ein Billboard-Rendering eingebaut und den Shader für das Image gemäss dieses Links angepasst. Und siehe da, es klappt. Auch wenn es jetzt organisatorisch etwas unschön ist, das UI-Elemente plötzlich am Objekt sind.
  8. Position in RenderTexture auf Objektbasis ermitteln?

    Danke für die Code-Schnippsel, ich werde das einmal ausprobieren.
  9. Position in RenderTexture auf Objektbasis ermitteln?

    Habe die Worldspace-Canvas Variante ausprobiert. Leider kann ich diese nicht nutzen, da das Objekt das in die Textur gerendert wird, rotiert werden kann. Somit kollidiert es ab einem bestimmten Winkel mit dem Objekt und wird dann wie Du schon vermutet hast, vom Objekt verdeckt. Bleibt somit nur Variante zwei, die habe ich jedoch noch nicht ganz verstanden. Sobald ich ein Overlay-Canvas erstelle wird dieses an den kompletten Camera Viewport angepasst nun verstehe ich nicht ganz, wie ich darin die Panels ausrichten soll, relativ zum Objekt ...
  10. Position in RenderTexture auf Objektbasis ermitteln?

    Worldspace Canvas, die kenne ich noch nicht und werde sie mir anschauen. Danke für den Hinweis.
  11. Position in RenderTexture auf Objektbasis ermitteln?

    Danke für Deine ausführliche Antwort. Könntest Du mir bitte einmal näher erklären was Du mit Kopplung des 3D Objektes und dem Canvas meinst? Irgendwie hast Du mich da grad gewaltig abgehängt P.S. Letztendlich möchte ich so etwas realisieren: Weapon UI
  12. Hallo zusammen, aktuell render ich ein 3D Objekt in eine Textur (2048x1600) um es als UI Element anzeigen zu können. Hierfür habe ich ein UI Panel (1400x286) an Position 0,0 mit Pivot 0,0 und mit einem RawImage (2048x1600) als Kind an Position 653,153 mit einem center Pivot (0.5,0.5) . Sowohl das Panel als auch das RawImage haben Ihren Anchor links unten. Soweit so gut, das Objekt wird wie gewünscht, als UI Element mittig auf dem Bildshirm gerendert. Nun besitzt das 3D Objekt diverse leere Objekte als Transformationspunkte um Mountpoints zu definieren. Meine Ziel ist es nun in der UI auf der angezeigten Textur an der entsprechenden Stelle des Mountpoints kleine Sprites anzuzeigen um diesen zu visualisieren. Wie mache ich das am besten? Üblicherweise kann ich ja eine Position in der Textur per Raycast ermitteln, wenn ich aus der UI komme, z.B. um eine Kollison mit einem Klick zu ermitteln. Nur wie bestimme ich die Position in der Textur auf Basis des Objektes unter Berücksichtigung der UI-Parent Elemente? Zunächst habe ich folgendes ausprobiert: public Vector3 GetUIPosition(Vector3 mountpoint) { RectTransform rect = this.GetComponentInParent<RectTransform>(); Debug.Log("Preview Rectangle " + rect.sizeDelta.ToString()); Vector2 viewPos = camera.WorldToViewportPoint(mountpoint); Debug.Log("Viewport pos : " + viewPos.ToString()); Vector2 localPos = new Vector2(viewPos.x * rect.sizeDelta.x, viewPos.y * rect.sizeDelta.y); Debug.Log("Viewport pos local : " + localPos.ToString()); return new Vector3(localPos.x, localPos.y, 1.0f); } Das liefert mir jedoch viel zu große Werte. Irgendwie stehe ich grade auf dem Schlauch und bin dankbar für jede Anregung. Viele Grüße Hellhound
  13. Probleme mit Textur in ScriptableObject

    Habs heut früh ausprobieren können, klappt. Du hattest recht so klappt es, allerdings musste ich vorher noch SaveAssets aufrufen. Zudem habe ich herausgefunden, dass man wirklich auf dem Objekt arbeiten muss, ändert man die Referenz, z.B. durch eine neue Instanz vom selben Typen und weist diese einfach zu, dann greifen die reinen AssetDatabase Mechanismen nicht, sondern man muss zuvor CopySerialized aufrufen. Letzteres hat mich einen Großteil der Zeit gekostet ... Danke noch mal für Deine Tipps.
  14. Probleme mit Textur in ScriptableObject

    Ok, das scheint zumindest der richtige Ansatz zu sein. D.h. ich bekomme die Textur am Asset gesichert, wenn ich nach dem erstmaligen Preview-Aufruf das Asset-Binding durchführe: public void OnEnable() { var item = this.ParentItem; if(item!=null){ var attr = item.GetAttribute<ModelData>(); if(attr!=null && this.texture==null) { prefab = attr.Prefab; this.CreatePreview(); AssetDatabase.AddObjectToAsset(this.texture, this); AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(this.texture)); AssetDatabase.SaveAssets(); Debug.Log("Texture bind to Asset on creation."); } } } Dann ist meine Textur am Asset sichtbar und wird auch beim Neustart von Unity erkannt, bzw. beim Start der Engine. Passt soweit. Nur wie bekomme ich es nun geupdated, wenn ich nachträglich im Inspector die Textur modifiziere?
  15. Probleme mit Textur in ScriptableObject

    Wo erzeugst du denn aus der Textur im Speicher ein Asset (außer das Speichern als PNG, ich denke hier wird ein Asset angelegt) und wo weist du das Asset dann dem SO zu? Genau das mache ich nicht, das habe ich implizit erwartet und entspricht den Vermutungen im letzten Absatz vor dem Gruß. D.h. wenn ich Dich richtig verstehe, muss die Textur explizit persistiert und dem Asset zugeordnet werden, da vermutlich das Scriptable Objekt nur eine Refernz auf diese Zuordnung hält. Ich habe bisher nur das Preview-Attribut selbst dem Item SO Asset zugeordnet, wenn das Preview-Attribut erzeugt wird. Ich bin davon ausgegangen, das Unity die Textur implizit sichert, weil die Textur als SerializableField deklariert ist, so wie es sich mit den anderen Objekten, wie z.B. Vector3 usw. auch verhält, die binde ich ja auch nicht explizit an das Asset. Das PNG war ja nur ein Zwischenschritt um zu Prüfen ob überhaupt was generiert wird. Dann muss ich mir das noch mal näher anschauen ...
×