gpt4 book ai didi

ios - SpriteKit 中的 SKVideoNode 问题,模拟器只显示灰屏

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:02:30 27 4
gpt4 key购买 nike

在进入我的游戏构建之前尝试运行“Cut Scense Video”。游戏效果很好。我创建了一个单独的场景,我将其命名为“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 的应用程序包中,是的,我确保名称与我在代码字符串中输入的名称匹配。最后一段代码只是我使用 touchesBegan 函数转换到 GameScene。

最佳答案

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

  1. 将StartScene.sks文件中的类设置为StartScene enter image description here我的问题是我没有将“自定义类”更改为我的场景名称。确保你这样做,我肯定是新手错误。

  2. 将 mp4 添加到“Copy Bundle Resources”构建阶段(不知道为什么需要这样做,我不认为这是在典型的应用程序中,但也许游戏是不同的) enter image description here确保视频文件不仅在左侧的 App 文件中,而且还被复制到 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

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

关于ios - SpriteKit 中的 SKVideoNode 问题,模拟器只显示灰屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51107193/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com