在Day 4中我们使用了ImmersiveSpace
并在其中添加了一个立方体,但对这个立方体我们只配置了长宽高,并没有做进一步的操作。
本文中我们会通过纹理和材质对这个立方体的六个面分别进行不同的绘制。首先我们将ImmersiveView
分拆出来,先新建一个ImmersiveView.swift
文件,这是一个视图文件,所以请选择User Interface下的Swift View完成创建,其中的内容待我们编写完ViewModel
中的代码后再进行修改。
我们通过点击界面来打开沉浸式视图,所以需要一个ContentView.swift
文件来编写常规的窗口页面,在其中添加一个Toggle开关,用于打开和关闭沉浸式视图。
import SwiftUI
import RealityKit
struct ContentView: View {
@State var showImmsersiveSpace = false
@Environment(\.openImmersiveSpace) var openImmersiveSpace
@Environment(\.dismissImmersiveSpace) var dismissImmersiveSpace
var body: some View {
NavigationStack {
VStack {
Toggle("Show ImmersiveSpace", isOn: $showImmsersiveSpace)
.toggleStyle(.button)
}
.padding()
}
.onChange(of: showImmsersiveSpace) { _, newValue in
Task {
if newValue {
await openImmersiveSpace(id: "ImmersiveSpace")
} else {
await dismissImmersiveSpace()