Как в RealityKit получить программный доступ к компоненту, созданному в Reality Composer Pro?

Допустим, я создал сцену с излучателем частиц в Reality Composer Pro. Я пытаюсь настроить некоторые значения эмиттера в коде, но не знаю, как получить доступ к эмиттеру частиц в моем коде.

      import Foundation
import SwiftUI
import RealityKit
import RealityKitContent

struct ImmersiveSpace: View {

    @State var myParticleEmitter: ParticleEmitterComponent?

    var body: some View {
        RealityView { content in
            do {
                let scene = try await Entity(named: "Scene", in: realityKitContentBundle)
                content.add(scene)
                scene.position = [0, 0.25, 0]
                self.particleEmitterComponent = scene.howDoIFindIt
            } catch {
                print(error)
            }
        } update: { content in
            self.particleEmitter.someValue = someUpdatedValue
        }
    }
}

#Preview {
    ImmersiveSpace()
}

1 ответ

Программный доступ к компонентам RCP

Попробуйте этот код для программного доступа к частицам, созданным в Reality Composer Pro:

      import SwiftUI
import RealityKit
import RealityKitContent

struct ContentView : View {    
    var body: some View {
        VStack {
            RealityView { content in
                if let particles = try? await Entity(named: "Scene", 
                                                        in: realityKitContentBundle) {
                    content.add(particles)
                }
            } update: { content in
                print(content)
                
                let particles = content.entities[0].findEntity(named: "ParticleEmitter")

                if var component = particles?.components[ParticleEmitterComponent.self] {
                    component.mainEmitter.color = .constant(.single(.green))
                    particles?.components.set(component)
                }
            }
        }
    }
}
#Preview {
    ContentView()
}
Другие вопросы по тегам