Sprite kit 如何将SKScene用作SCNSphere的纹理?
我想创建一个表面有红点的绿色球体。我发现的最有效的方法之一是使用SKScene作为具有所需属性的球体纹理,并在SwiftUI中将其作为一个整体显示在一个框架内。运行代码后,我得到一个纯白色的球体 我的代码是: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(
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())