• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-11 20:18:08 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

在进入我的游戏构建之前尝试运行“剪辑场景视频”。游戏效果很好。我创建了一个单独的场景,我将其命名为“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-推荐答案


我问了一位 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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap