You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RealityKit ECS中注册自定义组件及对应系统

解决RealityKit自定义组件与系统的注册问题

你需要在应用启动后、场景加载之前完成组件和系统的注册,以下是两种最稳妥的实现方式:

方式一:在SwiftUI App结构体中注册

如果你的项目是SwiftUI App架构(绝大多数新RealityKit项目默认采用),直接在App的初始化方法里添加注册代码:

import SwiftUI
import RealityKit

@main
struct YourAppName: App {
    init() {
        // 注册自定义组件
        RotateAroundComponent.registerComponent()
        
        // 注册自定义系统,try!用于快速验证,正式项目建议用do-catch捕获错误
        try! MySystem.registerSystem()
    }
    
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

方式二:在加载RealityKit场景前注册

如果你的场景是在ContentView中加载的,也可以在场景初始化前完成注册:

import SwiftUI
import RealityKit

struct ContentView: View {
    @State private var scene = try! Experience.loadMain()
    
    init() {
        // 提前注册组件与系统
        RotateAroundComponent.registerComponent()
        try! MySystem.registerSystem()
    }
    
    var body: some View {
        RealityView { content in
            content.add(scene)
        }
    }
}

关键注意事项

  • 注册操作必须在任何使用该组件/系统的场景加载前执行,否则RealityKit无法识别你的自定义类型。
  • 确保RotateAroundComponent的componentName和你在Reality Composer Pro中设置的组件标识符完全一致(即添加组件时填写的「Identifier」字段),否则组件无法和实体关联。
  • 你的MySystem可以优化查询逻辑,改用context执行查询更符合RealityKit的最佳实践:
class MySystem : System {
    private static let query = EntityQuery(where: .has(RotateAroundComponent.self))
    
    required init(scene: Scene) {}
    
    func update(context: SceneUpdateContext) {
        let entities = context.entities(matching: Self.query)
        entities.forEach { entity in
            // 示例:添加绕Y轴旋转逻辑
            entity.transform.rotation *= simd_quatf(angle: 0.01, axis: [0,1,0])
            
            // 更新组件内的count变量
            var component = entity.components[RotateAroundComponent.self]!
            component.count += 1
            entity.components[RotateAroundComponent.self] = component
            
            print("Entity rotated, count: \(component.count)")
        }
    }
}

内容的提问来源于stack exchange,提问作者Quicksillver

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 08:02:13