Computers

Wie man in der Einheit zu Schwarz verblasst

Autor: Peter Berry
Erstelldatum: 15 Juli 2021
Aktualisierungsdatum: 13 September 2024
Anonim
Friedrich Nietzsche: Götzen-Dämmerung oder wie man mit dem Hammer philosophiert (Hörbuch)
Video: Friedrich Nietzsche: Götzen-Dämmerung oder wie man mit dem Hammer philosophiert (Hörbuch)

Inhalt

Matt Bird schreibt alle Arten von Unsinn, aber er widmet einen großen Teil seiner Zeit dem Schreiben von Walkthroughs für Spiele.

Das Verblassen zu Schwarz ist ein ziemlich normaler Effekt in Videospielen. Es wird für eine Vielzahl von Situationen verwendet, wie zum Beispiel:

  • Bildschirme laden
  • Bildschirmübergänge
  • Das Ende von Schnittszenen
  • Tod / Spiel über Szenen
  • Die Schaffung einiger Spezialeffekte
  • Menüs
  • In vielen anderen Situationen gibt es unzählige Beispiele.

Fast jeder Spieledesigner muss irgendwann zu und von einem schwarzen Bildschirm verblassen. Es gibt einige ziemlich technische Möglichkeiten, um diesen Effekt zu erzielen, aber die mit Abstand einfachste umfasst ein paar Codeausschnitte und ein großes altes schwarzes Quadrat.

Methode 1: An Kamera befestigen

Um Ihren Fade-to-Black-Effekt zu erzielen, benötigen Sie ein rechteckiges, schwarzes Bild, das mindestens so groß ist wie Ihre Bildschirmauflösung. Das Quadrat selbst kann eine beliebige Größe haben, solange es ein flaches, durchgehendes Schwarz ist. Sie können dies auf zwei Arten erstellen:


  • Im Einheit, gehe zu Vermögenswerte dann im oberen Menü Erstellen, dann runter zu Spritesund rüber zum Platz. Dadurch wird ein kleines weißes Quadrat erstellt GameObject. Ändere das Farbe in dem SpriteRenderer zu Schwarz. Voila.
  • Sie können auch eines in einem Grafikprogramm Ihrer Wahl erstellen und als PNG in Unity importieren. Erstellen Sie ein neues Bild, stellen Sie Ihre Farbe auf Schwarz ein und verwenden Sie die Füllen Werkzeug, um das gesamte Bild schwarz zu machen. Stück Kuchen.

Unabhängig davon, wie Sie es erledigen, haben Sie jetzt ein GameObject, das komplett schwarz aussieht. Stellen Sie die Sortierebene auf etwas über jedem anderen GameObject ein, damit sie immer oben angezeigt wird. Sie können das GameObject jetzt so dehnen, dass es auf Ihren Bildschirm passt. Es ist so groß oder etwas größer als Ihre Kamera und deckt alles ab, was die Kamera sieht, wenn sie aktiv ist. Sie können es auch Ihrer Kamera zuordnen, sodass es der Kamera folgt, sodass Sie den Betrachtungsbereich der Kamera nach Belieben verdunkeln können.


Dies ist eine Möglichkeit, dies zu tun - aber ich persönlich bevorzuge eine andere Methode: Verwenden eines UI-Canvas, um Ihr Quadrat an den Bildschirm anzupassen.

Methode 2: Verwenden Sie einen UI-Canvas

Ähnlich wie beim Ausblenden von Bildschirmen werden die meisten Videospiele eine haben Benutzeroberfläche der Benutzeroberfläche von einer Art, die es den Spielern ermöglicht, auf Menüs zuzugreifen und wichtige Informationen anzuzeigen, während das Spiel läuft. UI-Leinwände platzieren automatisch alle Ihre UI-Elemente auf einer Ebene über dem Rest Ihres Spiels und folgen der Hauptkamera Ihres Spiels, wohin sie auch geht.

  1. Um einen UI-Canvas zu erstellen, klicken Sie mit der rechten Maustaste auf Ihre Hierarchie und scrollen Sie nach unten zu Benutzeroberflächein der Nähe des Bodens. Wählen Segeltuch. Dadurch wird ein UI-Canvas in der Hierarchie erstellt, und das Canvas wird in der Szenenansicht als riesiges Quadrat angezeigt. Auf diese Weise können Sie UI-Elemente bearbeiten, ohne den Rest Ihres Spiels zu berühren.
  2. Sobald dies erledigt ist, klicken Sie mit der rechten Maustaste auf Segeltuch in dem Hierarchie, geh runter zu Benutzeroberfläche erneut und wählen Sie Bild. Dadurch wird ein leeres Bild auf Ihrem erstellt Segeltuch. Klicke auf Quellbild in der Bildkomponente des Bildes und Sie können Ihr Quadrat auswählen, das in der vorherigen Methode ausgewählt wurde.
  3. Stellen Sie die Farbe auf Schwarz ein, falls Sie dies noch nicht getan haben, und ändern Sie dann die Skalierung des Bildes entsprechend Ihrer Bildschirmauflösung. Du bist bereit zu rocken.

Warum ist diese Methode besser? Ein Grund: Sie können UI-Elemente neben dem Rest des Bildschirms verdunkeln. Untergeordnete Elemente unter einem übergeordneten Element werden nach Ebenen geordnet, je nachdem, wie weit sie sich in der Hierarchie befinden. Im obigen Screenshot sehen Sie, dass sich 'BlackOutSquare' oben in der übergeordneten / untergeordneten Canvas-Hierarchie befindet. Dies bedeutet, dass alles, was danach kommt, weiterhin angezeigt wird, da sie sich im Vergleich zu BlackOutSquare auf höheren Ebenen befinden. Auf diese Weise können Spieler weiterhin Menüs sehen, wenn das schwarze Quadrat eingeblendet wird ...


... und nach der gleichen Logik können Sie UI-Elemente verdunkeln, die Sie lieber nicht sehen würden. Platzieren Sie einfach alle Elemente, die Sie ausblenden möchten, über dem BlackOutSquare in der Hierarchie, und das Quadrat deckt sie ab, wann immer es aktiv ist. Dies ist eine einfache Möglichkeit, Dinge zu ersticken, die Sie nicht sehen möchten, ohne auf Code zurückgreifen zu müssen.

Gehen Sie in die Farbeinstellung von BlackOutSquare und ändern Sie das Alpha (A) auf 0. Dadurch wird BlackOutSquare zur Vorbereitung auf den nächsten Schritt vollständig ausgeblendet.

Die Codierung

Nachdem Sie Ihr Bild in Schwarz eingeblendet haben, benötigen Sie Code, damit es angezeigt und ausgeblendet wird. Es gibt einige Möglichkeiten, die Arbeit zu erledigen. In diesem Fall werden wir jedoch Coroutines verwenden. Coroutinen sind Funktionen, die als Timer fungieren und es Ihnen ermöglichen, eine Reihe von zeitgesteuerten Schritten zu durchlaufen und zu bestimmen, wie lange es dauert, bis eine Funktion abgeschlossen ist, bevor sie beendet wird.

Erstellen Sie ein neues Skript, um Ihre Fade-to-Black-Funktion zu codieren. (Wenn Sie sich für die UI-Canvas-Methode entschieden haben, werden Sie wahrscheinlich dasselbe Skript für viele UI-bezogene Aufgaben verwenden. Daher schlage ich einen Namen vor, der ziemlich allgemein gehalten ist. UIController vielleicht? Bis zu Ihnen.) Jetzt müssen Sie erstellen einige Variablen und Funktionen:

Das Erste ist das Erste: Sie müssen UnityEngine.UI zu Ihrer Liste der Namespaces oben in Ihrem Skript hinzufügen. Namespaces sind Sammlungen von Klassen, mit denen Sie auf verschiedene Funktionen zugreifen können. C # kann normalerweise keine UI-Elemente wie Bilder in Skripten analysieren. Daher ist das Hinzufügen von UnityEngine.UI eine Notwendigkeit für die Bearbeitung Ihrer UI.

Das öffentliche GameObject oben, blackOutSquare, ist der Referenzsteckplatz für Ihr GameObject, das in Schwarz eingeblendet wird. Kehren Sie nach dem Erstellen der Variablen zu Unity zurück und legen Sie das von Ihnen erstellte Quadrat im Inspektor ab. Jetzt können Sie die Attribute des Quadrats aufrufen und bearbeiten. Kinderleicht.

Das Coroutine FadeBlackOutSquare ist etwas komplexer, daher werden wir es etwas aufschlüsseln:

  • In diesem Beispiel haben wir uns zunächst dafür entschieden, eine Funktion anstelle von zwei zu erstellen. Sie könnten Erstellen Sie zwei Funktionen, um dies zu erreichen - eine zum Einblenden des Quadrats und eine zum Ausblenden des Quadrats. Sie müssen jedoch weniger Code verwenden, wenn Sie es nur zu einer einzelnen Coroutine machen.
  • Als nächstes haben wir den Bool fadeToBlack = true. In diesem Fall wird blackOutSquare vollständig undurchsichtig, wenn die Funktion aufgerufen wird und fadeToBlack true ist, wodurch der Bildschirm verdunkelt wird. Wenn Sie die Funktion aufrufen und stattdessen fadeToBlack auf false setzen, wird blackOutSquare ausgeblendet und zeigt die darunter liegenden GameObjects an. Mit diesem Bool können wir zwei Funktionen in eine verwandeln. Wir haben es standardmäßig auf true gesetzt. Wenn Sie also beim Aufrufen von Coroutine Unity den Code nicht anders angeben, wird davon ausgegangen, dass Sie versuchen, schwarz zu werden.
  • Als nächstes steht int fadeSpeed ​​= 5. Auf diese Weise können wir steuern, wie schnell blackOutSquare ein- oder ausgeblendet wird. Standardmäßig ist fadeSpeed ​​5, aber Sie können es beim Aufrufen der Coroutine in eine beliebige Nummer ändern.
  • Zuletzt haben wir Yield Return New WaitForEndOfFrame ();. Coroutinen benötigen ein gewisses Maß an Zeit, um Fehler zu vermeiden. Dies geschieht hauptsächlich, um Fehler zu vermeiden. Wir werden es in einer Minute loswerden, sodass Sie es nicht selbst dort ablegen müssen.

Nun zum schweren Heben. Um blackOutSquare einzublenden, müssen wir unsere Coroutine wie folgt codieren:

Da Unity die direkte Manipulation der vier Variablen, aus denen die Farbe eines GameObjects besteht (r, g, b, a), nicht zulässt, müssen wir die gesamte Farbe auf einmal ändern. Zu diesem Zweck greifen wir auf die Farbattribute von blackOutSquare als neue Farbe, objectColor, zu und verwenden sie in Zukunft. Wir benötigen außerdem einen Float, in diesem Fall fadeAmount, mit dem wir berechnen können, um wie viel sich die Deckkraft des GameObjects in jedem Frame ändert.

Verschachteln Sie alles in einem fadeToBlack-Bool und erstellen Sie dann eine while () -Anweisung. Dieses while () weist Unity an, diesen Code so lange zu durchlaufen, bis das Alpha von blackOutSquare größer als 1 ist, dh vollständig sichtbar ist. Dann berechnen wir fadeAmount - das aktuelle Alpha von objectColor sowie einen Modifikator, der die Geschwindigkeit des Fades basierend auf dem Zeitablauf und der fadeSpeed-Nummer anpasst - und fügen diese Nummer als neues Alpha in objectColor ein. Die anderen drei objectColor-Attribute müssen nicht geändert werden. Belassen Sie sie daher als objectColor.r, objectColor.g und objectColor.b.

Fast fertig. Als nächstes müssen wir die Farbe von blackOutSquare so ändern, dass sie mit der von objectColor übereinstimmt. Dies ist einfach und wir müssen einen Befehl eingeben, damit die Coroutine die Rückgabe null ergibt. Dies weist die Coroutine an, nicht weiter voranzukommen. Wenn Yield Return Null in einer while () - Anweisung enthalten ist, wird im Grunde alles angehalten, bis die while () - Anweisungsbedingung erfüllt ist. In diesem Fall endet while (), sobald das Objekt undurchsichtig ist.

Jetzt können Sie zu Schwarz übergehen. Huzzah! Wie wäre es mit einem Verblassen von Schwarz? Glücklicherweise ist dies ein einfacher Fall des Kopierens und Einfügens. Nehmen Sie alles in if (fadeToBlack) und setzen Sie es nach der else-Anweisung unten. Ändern Sie dann die while () - Bedingung von 1 auf> 0 und die fadeAmount-Berechnung von Addition zu Subtraktion. Dies weist Unity an, das Alpha von blackOutSquare gegen Null zu bewegen und erst dann anzuhalten, wenn es Null erreicht. Jetzt ist dein GameObject wieder unsichtbar. Doppelte Huzzah!

Wenn Sie einige if (Input) -Anweisungen in Ihre Update () - Funktion eingeben, erhalten Sie Folgendes:

Angenommen, Sie haben alles richtig gemacht. Wenn Sie die A-Taste auf Ihrer Tastatur drücken, während das Spiel aktiv ist, wird Ihr BlackOutSquare GameObject angezeigt. Drücken Sie S und es wird wieder verschwinden. Sie haben eine erfolgreiche Funktion zum Überblenden in Schwarz! Glückwunsch! Wahrscheinlich möchten Sie einige Bools, um Fehler zu vermeiden, wenn Sie dies in einer Spieleinstellung verwenden - und Spieler sollten nicht über ihre Tastatur auf die Funktion zum Überblenden auf Schwarz zugreifen können -, aber mit diesem Ansatz können Sie mit der Erstellung des richtigen Bildschirms beginnen Übergangssequenzen für Ihr Spiel.

Ein letzter Hinweis zu Coroutinen. In den if (Input) -Anweisungen werden Sie feststellen, dass die Funktionsaufrufe in StartCoroutine () -Anweisungen verschachtelt sind. Obwohl Sie keine Fehlermeldung erhalten, wenn Sie eine Coroutine aufrufen, ohne StartCoroutine (), die Coroutine, zu verwenden springt nicht an Wenn Sie dieses zusätzliche Codebit nicht einschließen. Wenn Sie Ihr GameObject also nicht zum Ein- und Ausblenden bringen können, ist dies möglicherweise der Grund.

Teilen

Heute Lesen

So installieren Sie Exchange Server 2016
Computers

So installieren Sie Exchange Server 2016

Wenn ie eine In tallation in einer vorhandenen Exchange-Organi ation planen, ollte e in der Organi ation keine Ver ion 2007 oder früher geben.Wenn ie über Exchange 2007 oder früher verf...
Rückblick auf den Selpic Star A.
Misc

Rückblick auf den Selpic Star A.

Walter hillington chreibt über Produkte, die er au er ter Hand kennt. eine Artikel konzentrieren ich auf Ge undheit we en, Elektronik, Uhren und Hau halt gegen tände. eit ie auf den Markt ge...