August 2018

Band 33, Nummer 8

Dieser Artikel wurde maschinell übersetzt.

HoloLens - Mixed Reality und Fluent-Entwurf

Durch Tim Kulp | August 2018

Microsoft hat intensiv vorangetrieben auf die Entwicklung von mixed Reality (MR) da es die HoloLens in 2014 eingeführt und auf der im Mai 2018 für Build-Konferenz, anschließend eine Fülle von großartige Einblicke in die neuen Features in der Unity-Entwicklungsumgebung für MR sowie Benutzeroberfläche am besten entwerfen Methoden. In diesem Artikel werde ich nutzen, die auf der Build, um anzuzeigen, wie das Fluent Design-System von Microsoft verwendet werden können, erstellen Sie faszinierende Benutzeroberflächen im MR aufgeführten technische Anleitungen – insbesondere eine HoloLens-app, die nichtverbale untergeordneter Elemente für die Kommunikation über Piktogrammen ermöglicht.

Microsoft Fluent-entwurfssystem verwendet drei wesentlichen Prinzipien, um überzeugende Umgebungen bereitzustellen. Dies sind:

Adaptive: MR muss überbrücken und mingle die reale Welt und die digitale Komponenten erstellen Sie eine ganzheitliche Erfahrung. Als solche, die Benutzeroberfläche der Umgebung berücksichtigen muss beim verbessern (aber nicht ersetzen) des Benutzers realen auftreten.

Einfühlsamen: MR einfühlsamen Design erläutert, die Absicht des Benutzers und muss innerhalb der app-Erfahrung. Beispielsweise können nicht alle Benutzer sich für Bewegungen, damit die HoloLens-Befehle für Clicker und stimme eingabemöglichkeiten bereitstellen, die auf die Anforderungen des Benutzers einfühlsamen sind.

Schöne: Schöne apps sind eine der größten Herausforderungen in MR. Als Entwickler oder Designer müssen Sie die praktische Erfahrung erweitern, ohne es zu überlasten. Eine sorgfältige Planung und die richtigen Tools sind erforderlich.

Unity ist die am häufigsten verwendete Tool zum Erstellen von MR Erfahrungen. Gemäß Unity sind 90 Prozent der apps für HoloLens und MR mit seine Entwicklungsumgebung erstellt. Unity ein eigene Benutzeroberfläche-System enthält, übersetzt nicht es ganz einfach Fluent-Entwurf. Das Team bei Microsoft wurde die gemischte Realität Toolkit erstellt (bit.ly/2yKyW2r) und Mixed Reality Entwurf Lab (bit.ly/2MskePH) Tools, die Entwicklern helfen erstellen ausgezeichnete Benutzererlebnissen über die die Konfiguration der Komponenten. Verwenden diese Projekte, können Entwickler komplexe Grafikdesign-Arbeit vermeiden und die Funktionalität ihrer Anwendung konzentrieren. Die Mixed Reality-Toolkit und den Entwurf Lab sind mit vielen Codebeispielen gut dokumentiert. In diesem Artikel verwende ich das Mixed Reality-Toolkit 2017.4.0.0 Unity-Paket erstellen eine Schnittstelle, und zeigen, wie Sie die verschiedenen Komponenten in Ihrer eigenen Schnittstellen zusammenhängendes, eindeutige zusammentragen.

Bevor Sie Ihre Unity-Umgebung einrichten, führen Sie zunächst das erste Schritte-Tutorial aus dem Mixed Reality-Toolkit (bit.ly/2KcVvlN). Für dieses Projekt verwende ich den neuesten (zum Zeitpunkt dieses Artikels) Unity-Build 2018.2.08b. Mithilfe von Unity 2018.2 erforderlich, ein Update für das Mixed Reality-Toolkit, aber das Upgrade nicht dazu, dass alle Konflikte für die in diesem Artikel implementierte Funktionalität.

Entwerfen der Benutzeroberflächenautomatisierungs für MR

Eine hervorragende Erfahrung für MR beginnt mit einem effektiven Benutzeroberfläche-Fluss. Im Gegensatz zu Web- oder mobilen apps, die Benutzeroberfläche einer App, MR verfügt über eine große unbekannt: die Umgebung. Bei der Webentwicklung Sie müssen achten des Bildschirms Auflösung und Browserfunktionen, während Sie sich in Entwicklung für mobile Geräte die Pixel-Dichte und Phone-Funktionen. Aber bei MR Variable Art der physischen Umgebung und in der Umgebung des Benutzers entscheidend.

Durch eine Ausrichtung auf eine bestimmte Umgebung kann ich für der physische Speicherplatz und die besonderen Möglichkeiten des verwendeten Gerät optimieren. Meine Beispiel-app verwende ich für eine Einstellung für die Classroom entwerfen, wo Schüler/Studenten die app mit ihren Lehrer verwendet. Dies ist eine ausgewogene und relativ quiet-Umgebung, die grundlegend von einem Lager oder Nacht Club inneren Entwurf darstellt. Planen Sie die Benutzeroberfläche der Umgebung.

Die Umgebung ist nicht nur für den Benutzer extern, sondern auch von Gerätefunktionen des Benutzers gesteuert. Bei meiner Benutzeroberfläche muss ich Beachten der möglichen Steuerelemente verwenden. Planen der Umgebung des Benutzers und Funktionen, werden gesprochene Befehle keine wichtige Rolle aufgrund spielen mündliche Kommunikation nicht. Gesten wäre beschränkt, da mein Zielbenutzer auch in Ordnung motor Fähigkeiten Herausforderungen haben können. Dies führt zu große Schaltflächen und Benutzer mit Tools wie die HoloLens Clicker, wählen Sie die Schaltflächen.

Mit Denken Sie daran, ich auswählen möchte Layout wie meine Benutzeroberfläche für eine schöne Design. Wenn Sie ein Entwickler von Websites mit Bootstrap sind (oder ähnliche Benutzeroberflächen-Framework), mit der Erstellung in das Raster vertraut. Auf der UWP müssen Sie die Layout-Steuerelemente wie StackPanel "," Grid "und" Canvas. Im Mixed Reality-Toolkit müssen Sie die Sammlung-Komponente.

Die Auflistung-Komponente finden Sie im Mixed Reality-Toolkit unter Assets | UX | Skripts | Objektauflistung. Erstellen Sie einem leeren spielobjekt in Ihrer Szene, um es zu verwenden. Benennen Sie die leere spielobjekt zu "MainContainer", und fügen Sie die Auflistung der Objekt-Komponente auf den leeren spielobjekt zu. Fügen Sie zu Testzwecken einen Würfel als untergeordnetes Objekt auf der MainContainer. Festlegen des Cubes auf 0,5 X, 0.2y, 0.1z sieht wie ein thin-Rechteck. Jetzt duplizieren dieses Cubes achtmal insgesamt neun Cubes als untergeordnete Objekte der MainContainer haben.

Nachdem die Cubes hinzugefügt wurden, drücken Sie die Sammlung aktualisieren im Inspektor das Layout der Objektauflistung an die untergeordneten Objekte anwenden. Standardmäßig verwendet die objektauflistung Oberfläche Typ von einfachen. Für meine Benutzeroberfläche möchte ich die Auflistung, um den Benutzer auf seine können umbrochen werden. Aktualisieren Sie den Typ der Oberfläche für die objektauflistung auf Kugel im Inspektor, zu diesem Zweck. Nachdem alle Cubes angezeigt werden soll, siehe Abbildung1. Objektauflistungen bieten mehrere Typen von Fläche um die Benutzeroberfläche zum Erfassen des Benutzers für Ihr bestimmtes Szenario zu ermöglichen. Später in diesem Artikel zeige ich Ihnen wie Sie eine andere Art von Oberfläche zu verwenden, um ein anderes Ziel zu erreichen.

Aktualisieren den Typ der Entwurfsoberflächen auf Kugel
Abbildung 1 durch Aktualisieren des Surface-Typs auf die Kugel

Was sind wir erstellen?

Nicht-mündliche untergeordnete Elemente verfügen, Bücher von Piktogrammen, dass sie mit der Lehrer verwenden, um ihre Anforderungen auszudrücken. Jede Piktogramm ist ein Wort oder Ausdruck, der den untergeordneten und Lehrer zusammen zu erstellen. In diesem Artikel zeige ich Ihnen Gewusst wie: Erstellen Sie eine Benutzeroberfläche MR, um die HoloLens, das Buch berücksichtigen, damit Schüler/Studenten einen Satz für die Kommunikation mit ihren Lehrer erstellen können.

Ich beginne mit der Objekt-Auflistung hinzuzufügende eine Reihe von Schaltflächen für den Benutzer auswählen, um einen Satz zu erstellen. Die Schaltflächen befinden sich die Piktogrammen. Starten Sie durch das Hinzufügen von Ressourcen | Ordner in Ihrem Fenster "Projekt". Erstellen Sie in den Data-Ordner eine words.json-Datei, um die Wörter in der app darstellen. Der Beispielcode nutzt eine Datei kurze Wörter aus Gründen der Einfachheit.

Erstellen Sie im Fenster "Projekt" einen Ordner "Scripts", und erstellen Sie in diesem Ordner ein neues c#-Skript, WordLoader aufgerufen. Diese Komponente liest die words.json-Datei und in eine Auflistung von C#-Word-Objekte konvertiert wird. In der Testumgebung Entwurf sind Beispielprojekte, die den abgeschlossenen von Daten aus einer Datei gelesen und in eine MR Erfahrung zu veranschaulichen. Den Code aus dem Projekt periodisch-Tabelle zu diesem Beispiel präziser und vertraut, wie gezeigt in abgewandelter abbildung2. Sehen Sie sich das Projekt Zeitraum Tabelle bit.ly/2KmSizg für andere Features und Funktionen, die auf der Grundlage eine Datendatei lesen, und binden die Ergebnisse an eine objektauflistung.

Abbildung 2: das Skript WordLoader

[System.Serializable]
class Word
{
  public string category;
  public string text;
  public string image;
}
[System.Serializable]
class WordsData
{
  public Word[] words;
  public static WordsData FromJSON(string data)
  {
    return JsonUtility.FromJson<WordsData>(data);
  }
}

Schreiben Sie als Nächstes den Code des tutotrials Abbildung 3 für die WordLoader-Komponente. Diese Komponente lädt die Wörter aus der JSON-Datei und fügt sie als Schaltflächen die Objektauflistung hinzu. Es gibt zwei öffentliche Variablen in der Komponente: Übergeordnetes Element ist die Objekt-Auflistung, die Wörter enthält, und WordPrefab ist das Prefab verwendet, um die Wörter in der Umgebung MR darzustellen.

Abbildung 3 laden Wörter, aus der JSON-Datei

public class WordLoader : MonoBehaviour
{
  public ObjectCollection Parent;
  public GameObject WordPrefab;
  private void OnEnable() {
    if(Parent.transform.childCount > 0)
      return;
    TextAsset dataAsset = Resources.Load<TextAsset>("Data/words");
    WordsData wordData = WordsData.FromJSON(dataAsset.text);
    foreach (Word w in wordData.words) {
      GameObject newWord = Instantiate<GameObject>(WordPrefab, Parent.transform);
      newWord.GetComponent<CompoundButtonText>().Text = w.text;
      newWord.GetComponent<CompoundButtonIcon>().OverrideIcon = true;
      string iconPath = string.Format("Icons/{0}", w.image);
      newWord.GetComponent<CompoundButtonIcon>().iconOverride =
        (Texture2D)Resources.Load<Texture2D>(iconPath);
    }
    Parent.UpdateCollection();
  }
}

Nach allen Wörtern zum übergeordneten Element geladen werden, wird die neu erstellten Schaltflächen basierend auf das Layout der Objektsammlung Komponente aufrufen Parent.UpdateCollection ordnen Sie. Rufen Sie bei jeder Änderung eine Eigenschaft in der Objektauflistung-Komponente, Sammlung aktualisieren, um sicherzustellen, dass es sich bei alle Spielobjekte ordnungsgemäß aktualisiert werden.

Im Unity-Editor erstellen Sie jetzt einem leeren spielobjekt-Manager verwenden, wird aufgerufen, die die Utility-Komponenten für die Szene enthält. Fügen Sie die Komponente WordLoader-Manager, und legen Sie übergeordneten auf MainContainer. Legen Sie schließlich WordPrefab auf das Prefab Holographic Schaltfläche verwenden (finden Sie im HoloToolkit | UX | Prefabs (Vorlagen) | Die Schaltflächen). Diese Schaltflächen implementieren Fluent Design-Konzepten wie Licht verwenden, um den Fokus und die Aktion anzuzeigen. Wenn der Benutzer die Schaltfläche angezeigt wird, weiß er, was ausgewählt ist.

Ausführen der app nun Schaltflächen für jedes Wort in der Word-Datendatei erstellt (siehe Abbildung 4). Die Holographic Schaltflächen werden den Benutzer in einer Kugel umschließen. Im Modus mit Spielen, gerne die Objektauflistung Oberfläche Datentyp zum Experimentieren mit anderer Layouts zu aktualisieren. Der Abstand zwischen Zellen anpassen und Zeilenanzahl, um die richtige Mischung für Ihre Umgebung zu suchen. Denken Sie daran, Sammlung aktualisieren, nach jeder Änderung, damit die Änderung im Editor angezeigt.

Die Wörter anzeigen als Holographic Schaltflächen in der Objektauflistung
Abbildung 4 die Wörter als Holographic Schaltflächen in der Objektauflistung anzeigen

Halten sich mit dem Benutzer

Die erstellte die Objektsammlung ist es auf bestimmte Koordinaten in der ganzen Welt festgelegt. Während der Benutzer wechselt, bleibt die Objekt-Auflistung, in dem sie ursprünglich erstellt wurde. Für einen Kursraum funktioniert dies nicht, da immer an ihrem Arbeitsplatz für Kinder nicht. Ich muss zum Aktualisieren der Benutzeroberflächenautomatisierungs, mit dem Benutzer zu halten, während sie auf der realen Welt bewegen. In der Fluent-Entwurf müssen Sie an der Umgebung sein, selbst wenn diese Person wird verschoben und ändert sich die Umgebung aus.

Auf der Konferenz Build 2018 einer technischen Sitzung ("Erstellen von Anwendungen auf Warehouse-Ebene für HoloLens, bit.ly/2yNmwXt) Herausforderungen bei der Entwicklung von apps für Leerzeichen, die größer als eine Tabelle oben dargestellt. Diese reichen von UI-Komponenten sichtbar, wenn von Objekten wie eines Gabelstaplers in einem Lager bleibt die Benutzeroberfläche zugegriffen werden kann, wie der Benutzer blockiert halten Verschiebt einen Space für Projekte wie z. B. innere. Das Mixed Reality-Toolkit bietet Ihnen einige Tools, um einige der Probleme zu lösen, mit der Solver.

Das System Solver können Spielobjekte anpassen, deren Größe oder Position basierend auf der Bewegung der Benutzer über die Welt. In Unity können Sie sehen, wie einige Hochleistungscomputings in der Szene, die mit dem Editor funktionieren. Um eine Solver hinzuzufügen, wählen Sie das MainContainer-Objekt, und fügen Sie die Komponente SolverBodyLock (finden Sie im HoloToolkit | Dienstprogramme | Skripts | Hochleistungscomputings). Die SolverBodyLock-Komponente ermöglicht die Kugel von Schaltflächen mit dem Benutzer, bleiben, da es sich bei, wenn der Benutzer im gesamten bewegt den MainContainer mit ihnen verschoben wird. Um dies zu testen, führen Sie die app im Editor, und verschieben Sie den Raum der Welt mit dem Pfeil oder WASD Schlüssel. Sie sehen sich vorne, zurück, und Seite-an-Seite-Bewegungen: Halten Sie die MainContainer für Sie. Wenn Sie die Kamera drehen, folgen nicht die MainContainer Sie.

Damit wird die Benutzeroberfläche, die der Benutzer befolgen, wie er im Raum dreht, verwenden Sie die SolverRadialView, die in der Standardeinstellung das Objekt einfach in die Ansicht des Benutzers Peripheriegeräte speichert. Wie viel von dem Objekt sichtbar ist kann basierend auf der Komponente-Einstellungen vergrößern oder verkleinern. In diesem Fall möchte nicht ich die Benutzeroberfläche, die er, stellt sich den Benutzer referenzauswertung, damit die SolverBodyLock ausreicht. Er hält die Liste der Schaltflächen mit dem Benutzer, aber nicht immer in ihren Gesicht.

Verwalten der Größe

In meiner app erwarten, dass ich Personen über eine Einstellung Classroom zu verschieben. MR Wenn Benutzer von einem Objekt zu verschieben, wird in genau wie der realen Welt dieses Objekt kleiner. Dadurch werden Probleme erstellt: Ziel-UI-Komponenten, die in der entfernten Objekte sind mit Blicke kann schwierig sein, und Symbole können schwierig sein, Erkennen von weit entfernt werden. Der Solver ConstantViewSize dieses Problem löst, indem die UI-Komponente Sie zentral hochskalieren oder Herunterskalieren auf Grundlage des Benutzers Abstand.

Für dieses Beispiel-app machen Sie eine Komponente hinzufügen, die Benutzer, die Sätze erstellen können. Jede in der MainContainer gedrückt ist der Satz hinzugefügt. Z. B. wenn der Benutzer möchte sagen "Ich viel bin", er würde klicken Sie auf das "I" Schaltfläche ", und klicken Sie dann auf"bin"Schaltfläche, klicken Sie dann"viel". Jedes Klicken auf hinzugefügt den Container dem Satz ein Wort.

Erstellen Sie ein neues, leeres game-Objekt in der Hierarchie, und nennen Sie es Satz. Die Objektsammlung-Komponente zum Satz hinzufügen, den Typ von Surface-Ebene und die Zeilen auf 1 festgelegt. Dies erstellt eine flache-Schnittstelle, die in Zeilen für den Inhalt zu beeinträchtigen. Fügen Sie jetzt einen Würfel dem Satz-spielobjekt, damit Sie die Konstante Größe Solver in Aktion sehen können. Später werde ich die Wörter aus den Schaltflächen hinzufügen. Festlegen des Cubes auf X = 1.4, y = 0,15, Z = 0,1. Wenn Sie die app jetzt zu starten, und durchlaufen Sie den Speicherplatz, wird des weißen Würfels verkleinern und während des Verschiebens wachsen, weiter entfernt und es an.

Fügen Sie zum Sperren der Cuboid die visuelle Größe SolverConstantViewSize Komponente, mit dem Satz-Objekt. Die Dezimalstellen für die Komponente kann auch eingeschränkt werden die minimale und maximale Skala bereichseinstellungen verwenden, damit Sie steuern können, wie groß die UI-Komponente vergrößert oder verkleinert werden soll und welche Abstände – so können Sie Komponenten aus einer Tabelle oben, um einen Kursraum skalieren , um ein Warehouse.

Es sind weitere Hochleistungscomputings in Mixed Reality Toolkits verwenden, einschließlich Momentumizer und Oberfläche Magnetismus verfügbar. Sollten Sie sehen Sie sich das System Solver und vergrößern Ihrer eigenen MR Erfahrung mit einer Benutzeroberfläche, die der Benutzer im Bereich der realen Welt verwenden können (bit.ly/2txcl4c).

Der Satz und der Empfänger

Um die Schaltflächen mit den MainContainer für die Verbindung mit dem Satz-Objekt zu aktivieren, implementieren Sie einen Empfänger, der Ereignisse empfängt, über die Schaltflächen in der MainContainer gedrückt, und den Satz den Inhalt der Schaltfläche hinzugefügt. Verwenden, die es-Objekt und das Receiver-Muster, die das Mixed Reality-Toolkit integriert, verbinden die prefab Schaltflächen finden Sie in der HoloToolkit | UX | Ordner "Schaltflächen" ist einfach.

Erstellen Sie ein neues c#-Skript, Empfänger im Ordner "Scripts" des Projekts aufgerufen, siehe Abbildung 5. Ändern Sie das Skript, um InteractionReceiver aus "monobehavior" erben. Erstellen Sie eine öffentliche Variable um einen Verweis auf das spielobjekt Satz enthalten, und klicken Sie dann auf implementieren, das die Überschreibungsmethode für InputDown eines Benutzers reagieren Aktion auf den Holographic Schaltflächen.

Abbildung 5: das C#-Empfängerskript

public class Receiver : InteractionReceiver
{
  public ObjectCollection Sentence;
  protected override void InputDown(GameObject obj, InputEventData eventData)
  {
    switch (obj.name)
    {
      default:
        GameObject newObj = Instantiate(obj, Sentence.gameObject.transform);
        newObj.name = "Say" + obj.name;
        Sentence.UpdateCollection();
        break;
    }
  }

Erstellen Sie innerhalb der Methode InputDown einer Switch-Anweisung, die die Name-Eigenschaft, der die Obj-spielobjekt überprüft. Erstellen Sie vorerst die standardbedingung, das auftritt, unabhängig von der spielobjekt Namen ein. In die Standard-Anweisung, wenn ich das aufrufende Objekt dauern und erstellen eine neue Instanz der es unter das spielobjekt Satz. Dies erstellt eine neue Instanz der Schaltfläche in der objektauflistung Satz an, ohne die Registrierung bei der Empfänger. Wenn Sie die Schaltfläche im Satz Objekt klicken, geschieht nichts. Entfernen Sie vor dem Testen den weißen cuboid Platzhalter, damit Sie die Schaltflächen angezeigt werden, in der Objektauflistung Ebene sehen können.

Um die Schaltflächen in der MainContainer an den Empfänger zu verbinden, benötigen Sie ein paar Codezeilen, die die WordLoader hinzugefügt. Wie der Wörter in der app geladen wird, wird jeder für den Empfänger als eine Interactable registriert werden. Interactables handelt es sich um die Liste der Spielobjekte, die mit der InteractableObject-Komponente, der der Empfänger auf reagiert, wenn ein Ereignis auftritt. Fügen Sie innerhalb der Methode WordLoader OnEnable direkt unter der ChildCount-Überprüfung den folgenden Code hinzu:

var receiver = GetComponent<Receiver>();
if (receiver == null)
  return;

Dieser Code überprüft, um sicherzustellen, dass ein Empfänger vorhanden ist. Fügen Sie den folgenden Code nach dem Laden des Symbols für die Schaltfläche klicken Sie dann in der Foreach-Schleife für die Wörter:

receiver.Registerinteractable(newWord);

Registerinteractable hinzugefügt die Liste der Interactables für den Empfänger das spielobjekt. Jetzt die Holographic Schaltflächen in der MainContainer auf wird ausgelöst, den Empfänger ein, um die InputDown-Methode auszuführen, und erstellt eine Kopie der Schaltfläche, auf die geklickt wurde.

Bei der einige kleinere Neukonfiguration MainContainer Objektauflistung Zellengröße und Platzierung, sehen Sie, etwas Ähnliches wie in der Abbildung gezeigt Abbildung 6.

MainContainer und Auflistungen Satz nach Update
Abbildung 6 MainContainer und Auflistungen Satz nach Update

Während ich die Holographic Schaltflächen in diesem Beispiel verwende, kann es Komponente auf einen Wert aus einem benutzerdefinierten Mesh auf Text angewendet werden. Lassen Sie Ihrer Kreativität freien Lauf lassen sich erstaunliche Schnittstellen vorstellen. Denken Sie daran, dass eines der Ziele von MR ist, um die Welt digital oder physisch zusammenzuführen, damit sie zusammen funktionieren.

Nutzen Text in Sprache

Teil der Fluent-Entwurf wird zu den Anforderungen Ihrer Benutzer einfühlsamen. In diesem Beispiel können Sie diese fehlen, für die verbale Sprache so, dass selbst ausgedrückt wird aktiviert. Nun müssen Sie Text in Sprache zu verwenden, um die laut sagen, was der Benutzer in ihrem Satz erstellt wurde. Die HoloToolkit bietet eine hervorragende mit minimalem Code oder Konfiguration dazu. Wenn Sie eine HoloLens nicht verwenden, sehen Sie sich meine MSDN Magazin-Artikel "Verwenden von Cognitive Services und Mixed Reality" (msdn.com/magazine/mt814418), um zu erfahren, wie Sie Text in Sprache über Azure Cognitive Services verwenden.

Fügen Sie eine Audio Source zu Ihrem Projekt Hierarchie hinzu, um Text in Sprache zu nutzen. Dies wird von der Sprachausgabe-Komponente verwendet, um Audio für Benutzer, zu hören zu generieren. Nun fügen Sie Text in Sprachkomponente (finden Sie im HoloToolkit | Dienstprogramme | TextToSpeech) dem spielobjekt Managern. Ich verwende das Manager-spielobjekt als Anlaufstelle und für alle Hilfsmethoden (Empfänger, Text-zu-Sprache), um Ereignisse und was passiert, mit diese Ereignisse zu zentralisieren. In diesem Fall wird der Empfänger die Sprachsynthese-Komponente, z. B. den Satz mit den gleichen Empfänger vorgenommenen Einstellungen für das Hinzufügen von Wörtern in den Satz verwenden. Richten Sie die Sprachsynthese-Komponente aus, um die Audio-Quelle zu verwenden, Sie gerade erstellt haben, durch Auswählen in der Eigenschaftenanalyse.

In der Empfänger möchte ich, wie Sie ermitteln, ob alle Wörter im Satz vorhanden sind, wenn Sie also, ich eine Schaltfläche hinzufügen, mit dem den Satz Text wird. Fügen Sie eine neue öffentliche Variable von spielobjekt mit SayButton an die Empfänger-Komponente hinzu.

public GameObject SayButton;

Dies ist das Prefab als die Schaltfläche "Say" verwendet wird. Fügen Sie in der Switch-Anweisung Standardblock die folgende If-Anweisung vor der Satz das neue Objekt hinzugefügt:

if (Sentence.transform.childCount == 0)
{
  GameObject newSayButton = Instantiate(SayButton, Sentence.transform);
  newSayButton.name = "Say";
  newSayButton.GetComponent<CompoundButtonText>().Text = "Say: ";
  GetComponent<Receiver>().Registerinteractable(newSayButton);
}

Wenn es keine untergeordneten Elemente im Satz-Objekt, fügen Sie in diesem Fall die Schaltfläche "Say" vor jedem anderen Schaltflächen. Dadurch können Z.B. ganz links des Satzes Objekts nach jedem Satz. Als Nächstes erstellen Sie eine neue Case-Anweisung, in die Umstellung auf die Schaltfläche "Say" anhand des Namens zu erkennen. Beachten Sie, dass der Switch basiert darauf, dass obj.name und bei der Erstellung auf diese Schaltfläche, Sie legen Sie den Namen "Sagen." Hier ist der Code:

case "Say":
  StringBuilder sentenceText = new StringBuilder();
  foreach (CompoundButtonText text in
    Sentence.GetComponentsInChildren<CompoundButtonText>())
  {
    sentenceText.Append(text.Text + " ");
  }
  TextToSpeech tts = GetComponent<TextToSpeech>();
  tts.StartSpeaking(sentenceText.ToString());
  break;

Dieser Fall erkennt die Schaltfläche "Say" anhand des Namens und durchläuft dann, bis alle untergeordneten Elemente des Satzes ein, um eine Abfolge von Wörtern, die für die TextToSpeech-Komponente zu erstellen als einen Satz ein. Wenn der Benutzer erfolgt erstellen eine Anweisung, er kann drücken Sie die Schaltfläche "Say", um seine Anweisung auszudrücken. Der Einfachheit halber ich hatte keine im Text-zu-Sprache-Manager, der die HoloToolkit implementieren (bit.ly/2lxJpoq), aber es ist hilfreich, vermeiden Sie Situationen, z. B. ein Benutzer aus, drücken Z.B. immer wieder, was der Text in Sprache die Komponente mehrere Dinge gleichzeitig sagen möchten.

Zusammenfassung

Verwenden von Fluent-Entwurf mit MR ist wie geschaffen. Tools wie Mixed Reality-Toolkit und Mixed Reality Entwurf Labs sind ausgezeichnete Springboards, eine Benutzeroberfläche zu erstellen, die Adaptive und ansprechende einfühlsamen ist. In diesem Artikel ging es um einige Benutzeroberflächen, die am Build 2018 angezeigt wird, für die MR implementieren. Verwenden von Auflistungen als ein Layouttool, Solver Systeme, mit dem Benutzer die Benutzeroberfläche zu halten, sie beim Navigieren durch Leerzeichen, und anschließend miteinander verbinden, die Erfahrung mit einen Empfänger für die zentrale Verwaltung, habe ich Ihnen, wie Sie eine app MR schnell erstellen.

Die Beispiele aus dem Mixed Reality-Toolkit verwenden, können Sie mit neuen Optionen der Benutzeroberfläche und Funktionen dieser Beispiel-app weiter nutzen. Überprüfen Sie die MR-Sitzungen von Build 2018, lassen Sie sich weitere Informationen zum Erstellen von außergewöhnlicher Erfahrungen, die den physischen der digitalen Welt in blend.


TIM Kulpist Director of aufstrebende Technologie denken über Computer Baltimore, USA Er ist eine mixed Reality, künstliche Intelligenz und Cloud-app-Entwickler sowie Autor, übertragen, Vater und "entwickelt Verrückter Professor Maker". Suchen Sie ihn auf Twitter: @tim_kulp oder LinkedIn: linkedin.com/in/timkulp.

Unser Dank gilt dem folgenden technischen Experten für die Durchsicht dieses Artikels: Werden Sie also (Balti virtuelle)


Diesen Artikel im MSDN Magazine-Forum diskutieren