Sprite kit 如何将SKScene用作SCNSphere的纹理?

Sprite kit 如何将SKScene用作SCNSphere的纹理?,sprite-kit,scenekit,swiftui,swift5,sktexture,Sprite Kit,Scenekit,Swiftui,Swift5,Sktexture,我想创建一个表面有红点的绿色球体。我发现的最有效的方法之一是使用SKScene作为具有所需属性的球体纹理,并在SwiftUI中将其作为一个整体显示在一个框架内。运行代码后,我得到一个纯白色的球体 我的代码是: import SwiftUI import SceneKit import SpriteKit import UIKit //SKScene containing the point class material: SKScene{ let point = SKShapeNode(

我想创建一个表面有红点的绿色球体。我发现的最有效的方法之一是使用SKScene作为具有所需属性的球体纹理,并在SwiftUI中将其作为一个整体显示在一个框架内。运行代码后,我得到一个纯白色的球体

我的代码是:

import SwiftUI
import SceneKit
import SpriteKit
import UIKit

//SKScene containing the point 

class material: SKScene{

let point = SKShapeNode(circleOfRadius: 0.5)
override func didMove(to view: SKView) {
    backgroundColor = SKColor.green
    point.fillColor = SKColor.red
    point.position = CGPoint(x: 100, y: 100)
    physicsWorld.gravity = CGVector.zero
    addChild(point)

  }
}

//SCNScene containing the sphere 

 struct SceneKitView: UIViewRepresentable {

  func makeUIView(context:            UIViewRepresentableContext<SceneKitView>) -> SCNView {
    let sceneView = SCNView()
    sceneView.scene = SCNScene()
    sceneView.allowsCameraControl = true
    sceneView.autoenablesDefaultLighting = true
    sceneView.backgroundColor = UIColor.white
    sceneView.frame = CGRect(x: 0, y: 10, width: 0, height: 1)


    let sphere = SCNSphere(radius: CGFloat(2))

    sphere.firstMaterial?.diffuse.contents = material()

    let spherenode = SCNNode(geometry: sphere)
    spherenode.position = SCNVector3(x: 10.0, y: 10.0, z: 10.0)
    sceneView.scene?.rootNode.addChildNode(spherenode)

    return sceneView
}

 func updateUIView(_ uiView: SCNView, context:     UIViewRepresentableContext<SceneKitView>) {

}

  typealias UIViewType = SCNView
}

//SwiftUI code

struct ContentView: View {
 var body: some View {

    SceneKitView()
        .frame(width: 300, height: 300)

  }
}

请帮我解决这个问题。

迪莫夫从未接到过电话

如果你真的叫它,球体会变成绿色

 let material = Material()

    sphere.firstMaterial?.diffuse.contents = material

    material.didMove(to: SKView())