Wie können mehrere GameObjects Teile desselben Materials gemeinsam nutzen?


9

Meine Frage ist: Gibt es eine Möglichkeit, GameObjects dazu zu bringen, Teile desselben Materials zu teilen, nicht einen Klon, sondern eine Erweiterung von einem? In diesem Fall werden beispielsweise neun Spielobjekte, die dasselbe Material verwenden, vergrößert, um die Größe von neun Objekten zu erreichen:

Gras

Und in dem Fall, in dem ich zum Beispiel eines in der Mitte lösche, wird das gleiche Material mit der Leerstelle im Inneren vergrößert:

Grass2

Zu diesem Zweck habe ich ein Material pro Objekt verwendet, aber ich beabsichtige, nur eine Textur für mehrere Objekte oder beispielsweise mehr von einer Textur in verschiedenen Teilen desselben zu verwenden. (Wie der Malknopf, den wir in den benutzerdefinierten Unity3D-Terrains haben).


Antworten:


2

Haben Sie sich mit der Verwendung von Unitys Shadergraph befasst, um Ihren eigenen Shader für das Material zu erstellen? Möglicherweise können Sie das erreichen, was Sie möchten, indem Sie die Weltraumposition für Texturen / UVs verwenden. Ich kann es nicht gut erklären und bin nicht gut in Shadern, aber ich habe ein schnelles Beispiel für Sie als Wasser-Shader verspottet, weil ich gelangweilt war und bereits in meinem Projekt herumgespielt habe, das Experimenten gewidmet war.

Dieses Bild zeigt, dass die überlappenden Ebenen dasselbe Material zu haben scheinen Beispielmaterialien

Dies ist das Beispiel in Shadergraph Shadergraph Beispiel

Kurze Zusammenfassung der Shader-Knoten aus meinem Beispiel, so wie ich sie verstehe

  1. Diese Knoten erfassen die x- und z- Werte im Weltraum und kombinieren sie in einem Vektor 2
  2. Dieser Knoten verwendet die xz- Werte und versetzt sie basierend auf den Knoten in 3
  3. Verwenden Sie die Zeit und einen Vektor 2, um den UV-Versatz zu scrollen. gibt einen Welleneffekt
  4. Multiplizieren Sie den Wert basierend auf dem normalen Kachelwert .
  5. Nimmt die UV-Daten von 4 und eine normale Karte
  6. Normale Stärke. ändert die Stärke der Wirkung
  7. Nimmt alle Daten von 1 - 6 und die Wassertextur und speist in 8 in die Albedo ein
  8. Alle Knoten werden hier eingespeist, damit der Shader ändern kann, wie sich jede dieser Eigenschaften auf das Material auswirkt.

Wenn jemand der Meinung ist, dass etwas, was ich gesagt oder getan habe, falsch ist oder verbessert werden könnte, können Sie mich gerne korrigieren. Ich lerne noch und ein Anstoß in die richtige Richtung ist immer willkommen. Ich habe die Beispielszene auf Google Drive hochgeladen , damit Sie damit herumspielen können. unsicher, ob eine Zuordnung erforderlich ist, aber das verwendete Wasservermögen ist kostenlos und von gametextures.com


0

Sie können einen Sprite-Atlas aus einer Textur erstellen, ein untergeordnetes Objekt für Ihre Ebene oder eine beliebige Form erstellen, erstellte Sprite-Ausschnitte ziehen, das untergeordnete Objekt innerhalb des Flugzeug-Spielobjekts drehen und platzieren, wie Sie möchten, und voila, sehen Sie sich das Bild an unten zu sehen, was ich meine,

Sprite-Atlanten

Es mag mühsam sein, aber es scheint, dass diese Lösung genau zu Ihnen passt.


0

Eine weitere Option ist die Verwendung des Projektorobjekts im Ordner "Unity Standard Assets". Es ist nicht sehr performant, aber sehr einfach einzurichten. In einfachen Fällen kann es also genau das sein, wonach Sie suchen. Aber wie gesagt, es hat einen ziemlich erheblichen Einfluss auf die Leistung, insbesondere wenn Sie größere Texturen projizieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.