3

在进入我的游戏构建之前尝试运行“剪切场景视频”。游戏效果很好。我创建了一个单独的场景,我将其命名为“StartScene”来播放我的过场动画。构建成功,但是当它到达模拟器上的过场动画部分时,我得到一个空白的灰色屏幕。我在网上搜索了很多视频的大小调整问题,但是 Apple Developer 说:

创建视频节点时,其 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 的过程。

4

1 回答 1

0

我问了一位 Apple Developer 朋友,他帮我解决了这个问题。以下是让 SKVideoNode 正常播放的步骤: 请注意,此构建的场景称为 StartScene。

  1. 将 StartScene.sks 文件中的类设置为 StartScene 在此处输入图像描述 我的问题是我没有将“自定义类”更改为我的场景名称。确保你这样做,我的新手错误肯定。

  2. 将 mp4 添加到“Copy Bundle Resources”构建阶段(不知道为什么需要这样做,我认为它不是在典型的应用程序中,但可能游戏不同) 在此处输入图像描述 确保视频文件不仅在应用程序文件中在左侧,但它也被复制到 Build Phases---> Copy Bundle Resources 区域。

  3. 此时它将播放,但您只会听到视频的声音。要查看它,您需要设置大小。所以在 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()
    }
    

所有关于使尺寸适合播放它的屏幕。

  1. 视频现在应该会显示,但宽高比会关闭。所以在 GameViewController 中改变这一行

    scene.scaleMode = .aspectFill
    

    对此

    scene.scaleMode = .fill
    

瞧!视频应该可以播放,我的视频现在可以使用此代码播放,并且步骤已完成。希望这对您有所帮助,就像对我一样。快乐编码!

于 2018-06-30T15:25:48.117 回答