在进入我的游戏构建之前尝试运行“剪辑场景视频”。游戏效果很好。我创建了一个单独的场景,我将其命名为“StartScene”来播放我的过场动画。构建成功,但是当它到达模拟器上的过场动画部分时,我得到一个空白的灰色屏幕。我在网上搜索了很多视频的大小调整问题,但是 Apple Developer 这么说:
When a video node is created, its size property is initialized to the base size of the video content, but you can change it if you want. The video content is automatically stretched to the new size.
我从 Apple Developer 复制的示例代码:
let sample = SKVideoNode(fileNamed: "sample.mov")
sample.position = CGPoint(x: frame.midX,
y: frame.midY)
addChild(sample)
sample.play()
这是我在 StartScene.swift 中播放过场动画的代码:
import SpriteKit
import GameplayKit
class StartScene: SKScene {
override func sceneDidLoad() {
let openingVideo = SKVideoNode(fileNamed: "MyCutScene.mp4")
openingVideo.position = CGPoint(x: frame.midX, y: frame.midY)
addChild(openingVideo)
openingVideo.play()
}
override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
let gameSceneTemp = GameScene(fileNamed: "GameScene")
self.scene?.view?.presentScene(gameSceneTemp!, transition: SKTransition.doorsCloseHorizontal(withDuration: 1.0))
}
}
也许这是一个新手错误,通常只是格式化场景错误。我认为这会很简单。视频保存在 Assets 的 App 包中,是的,我确保名称与我在代码字符串中输入的匹配。最后一段代码只是我使用 touchesBegan 函数过渡到 GameScene。
Best Answer-推荐答案 strong>
我问了一位 Apple 开发者 friend ,他帮我解决了这个问题。以下是让 SKVideoNode 正常播放的步骤:
注意我的这个构建场景叫做 StartScene。
将 StartScene.sks 文件中的类设置为 StartScene
我的问题是我没有将“自定义类”更改为我的场景名称。确保你这样做,新手肯定是我的错误。
将 mp4 添加到“Copy Bundle Resources”构建阶段(不知道为什么需要这样做,我不认为这是在典型的应用程序中,但也许游戏不同)
确保视频文件不仅在左侧的 App 文件中,而且还被复制到 Build Phases---> Copy Bundle Resources 区域。
此时它会播放,但您只会听到视频的声音。要查看它,您需要设置大小。所以在 StartScene 类中的 didMove 函数中添加一行来设置大小。
override func didMove(to view: SKView) {
let openingVideo = SKVideoNode(fileNamed: "UncleClaryWolfIntro.mp4")
openingVideo.anchorPoint = CGPoint(x: 0.5, y: 0.5)
openingVideo.position = CGPoint(x: 0, y: 0)
openingVideo.size = frame.size
addChild(openingVideo)
openingVideo.play()
}
所有关于使尺寸适合播放它的屏幕。
现在应该会显示视频,但宽高比会关闭。所以在 GameViewController 中改变这一行
scene.scaleMode = .aspectFill
到这里
scene.scaleMode = .fill
瞧!视频应该可以播放,我的视频现在可以使用此代码播放,并且步骤已完成。希望这对您有所帮助,就像对我一样。
快乐编码!
关于ios - SpriteKit 中的 SKVideoNode 问题,模拟器仅显示灰屏,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/51107193/
|