RealityUi ist eine Sammlung von Dienstprogrammen und UI -Objekten für RealityKit. Die in Realityui enthaltenen UI -Objekte zielen darauf ab, vertraute Standards der Benutzeroberfläche zu bieten, jedoch in einer 3D -Einstellung für Augmented und Virtual Reality durch RealityKit.
RealityUi verfügt auch über eine Sammlung von Komponenten, um durch Touch- oder Drag -Interaktionen mit jeder Entität zu enden.



Fügen Sie die URL dieses Repositorys in Ihrem Xcode 11+ -Projekt unter Project > Swift Packages hinzu.
https://github.com/maxxfrazer/RealityUI.git
Fügen Sie import RealityUI an die Spitze Ihrer Swift -Datei hinzu, um zu starten.
Alle in Reality verwendeten Komponenten müssen vor ihrer Verwendung registriert werden. Nennen Sie einfach RealityUI.registerComponents() überall in Ihrer App, bevor alle mit RUI begonnenen Klassen initialisiert werden, um Probleme damit zu vermeiden. Weitere Informationen darüber, was unter der Registrierung von Komponenten gemeint ist, finden Sie hier die Dokumentation von Apple.
Bei VisionOs können Gesten in einer RealityView mit View/addRUIDragGesture() oder View/addRUITapGesture() Modifikatoren oder durch Hinzufügen der Gesten direkt mit .gesture(RUIDragGesture()) oder .gesture(RUITapGesture()) . Die RealityView könnte ungefähr so aussehen:
RealityView { content in
let swtch = RUISwitch ( )
swtch . scale = . init ( repeating : 0.1 )
content . add ( swtch )
} . addRUIDragGesture ( )Der obige Snippet fügt der Szene einen interaktiven Schalter/einen Umschalter hinzu.
Diese Geste funktioniert für jedes Unternehmen mit Ruidragcomponent, zum Beispiel:
RealityView { content in
let movable = try ! await ModelEntity ( named : " toy_biplane " )
movable . generateCollisionShapes ( recursive : false )
movable . components . set ( RUIDragComponent ( type : . move ( nil ) ) )
movable . components . set ( InputTargetComponent ( ) )
content . add ( movable )
} . addRUIDragGesture ( ) 
Das Aktivieren von RealityUi -Gesten kann danach dienen, indem RealityUI.enableGestures(.all, on: ARView) bezeichnet werden, wobei ARView Ihre Instanz eines Arview -Objekts ist.
Ruislider, Ruiswitch, Ruistepper und Ruibutton verwenden alle RUIDragComponent , was .ruiDrag benötigt. Wenn Sie Elemente hinzufügen, die die Komponente RUITapComponent verwenden, können Sie die Geste .tap verwenden. Ich würde nur empfehlen .all bei der Aktivierung von Gesten zu verwenden, da diese sich unweigerlich bewegen, wenn sich Realityui entwickelt.
RealityUI.enableGestures(.all, on: arView)
Standardmäßig sind alle Realityui -Unternehmen ziemlich groß. Dies wird verwendet, um die Größen zu standardisieren, damit Sie immer wissen, was Sie erwarten können. Zum Beispiel sind alle UI -Daumen Kugeln mit einem Durchmesser von 1 Meter, was 1 Einheit in RealityKit ist, ± alle Polsteranpassungen. Alle RealityUi -Entitäten sehen sich standardmäßig gegenüber [0, 0, -1] aus. Damit sie auf die Benutzerkamera oder .zero zeigen, können Sie den .look(at:,from:,relativeTo:) Methode wie SO .look(at: .zero, from: [0, 0, 1]) Oder wenn Sie möchten, dass es sich sofort umdreht, wenn Sie es bei [0, 0, -1] positioniert haben, stellen Sie die Orientierung auf simd_quatf(angle: .pi, axis: [0, 1, 0]) . Die Verwendung der Methode .LOOK () funktioniert hier, indem Sie den at: Wert auf die Richtung einstellen, von der die Schaltfläche verwendet werden sollte.
Ruiswitch ist ein 3D -Kippschalter mit einem Ein- und Ausschalten. Das Standard -Begrenzungsfeld ist 2x1x1m

Weitere Details
Ruistepper wird verwendet, um einen Wert zu erhöhen oder zu verringern. Das Standard -Begrenzungsfeld ist 2x1x0.25m

Weitere Details
Eine interaktive Spur, um einen interpolierten Wert darzustellen. Das Standard -Begrenzungsfeld ist 10x1x1m einschließlich Daumen.

Weitere Details
Ruibutton wird verwendet, um eine bestimmte Aktion zu initiieren. Die Aktion hier löst nur dann aus, wenn die Geste auf einer Taste beginnt und auch auf derselben Taste endet. Dies ähnelt dem Touchupinside UIControl -Event. Die Standardschaltfläche für die Begrenzung des Standards, bevor die Taste in die Basis deprimiert wird, ist [1, 1, 0.3]

Weitere Details
Alle RealityUi -Kontrollunternehmen verwenden benutzerdefinierte Gesten, die in RealityKit nicht Standard sind, aber einige von ihnen wurden isoliert, sodass jeder sie verwenden kann, um seine eigene RealityKit -Szene zu manipulieren.
Ziehen Sie Objekte überall im Weltraum mit 3 Grad Freiheit mit Ruidragcomponent unter Verwendung des .move -Typs.

Dieser Typ hat eine optionale Einschränkung, um die Bewegung innerhalb bestimmter Kriterien zu beheben:
Box -Einschränkung : Beschränken Sie die Bewegung innerhalb einer bestimmten BoundingBox und bieten einen definierten Bereich, in dem sich das Entität bewegen kann.
Punkteinschränkungen : Begrenzt die Bewegung auf einen Satz vordefinierter Punkte, der als Array von SIMD3<Float> dargestellt wird.
Klemmenbeschränkung : Verwendet eine benutzerdefinierte Klemmfunktion, um die Bewegung zu steuern. Diese Funktion nimmt eine SIMD3<Float> als Eingabe an und gibt ein modifiziertes SIMD3<Float> zurück, um die neue Position zu bestimmen.
Schalte die Fähigkeit frei, eine RealityKit -Entität mit nur einem Finger zu drehen.

Weitere Details
Erstellen Sie ein Objekt in Ihrer RealityKit -Szene mit einer Aktion, und es wird automatisch aufgegriffen, wenn der Benutzer darauf aufnimmt!
Kein GIF für diesen, aber sehen Sie sich Ruitapcomponent an, um zu sehen, wie Sie dies einer Entität in Ihrer Anwendung hinzufügen können.
Wenn Sie stattdessen etwas Ähnliches wie ein "Inneren" -Pleiter verwenden wollten, können Sie RuidragcomponentType/Click verwenden.

Es gibt nicht viele Animationen, die standardmäßig zu RealityKit hinzugefügt wurden, insbesondere keine, die Sie wiederholen können. Siehe die Wiki -Seite, um diese Animationen zu verwenden.
Drehen Sie eine Entität mit Ruispin leicht um eine Achse.
Weitere Details
Schütteln Sie eine Entität, um Aufmerksamkeit zu erregen, oder signalisiert, dass etwas falsch war.
Weitere Details
Es ist bereits möglich, Text in RealityKit zu platzieren, aber ich hatte das Gefühl, dass es ein wenig Upgrade brauchte.
Mit Ruitext können Sie problemlos eine Entität mit dem angegebenen Text erstellen, der mit dem Begrenzungsbox -Zentrum in der Mitte Ihrer Entität platziert ist.

Weitere Details
Weitere Informationen zu allem, was in diesem Swift -Paket in der Dokumentation bereitgestellt wird.
Sehen Sie sich auch das Beispielprojekt für iOS in diesem Repository an.