{}!Google Tag Manager end}} Video Player 组件 | PolySpatial visionOS | 1.0.3
docs.unity3d.com
    显示 / 隐藏目录

    Video Player 组件

    您可以使用以下两个组件中的任何一个在visionOS上使用PolySpatial显示视频内容:

    • VisionOSVideoComponent
    • VideoPlayer

    虽然任何一个组件都可以在visionOS上播放视频,但每个组件都有优缺点需要考虑。

    VisionOSVideoComponent

    为了支持visionOS上的视频内容,PolySpatial目前包含了一个自定义的“VisionOSVideoComponent”。要使用该组件,请将其添加到GameObject并设置其属性。“Target Material Renderer”属性确定了将显示视频内容的“MeshRenderer”。任何MeshRenderer都可以使用。“Clip”属性标识您要播放的“Video Clip”资源,例如“.mp4”。

    当前系统的一个限制是,必须手动将剪辑复制到“../StreamingAssets/VisionOSVideoClips/”文件夹中才能在visionOS上正确显示和渲染。该文件夹必须是项目文件夹的相对路径 - 例如,完整文件夹路径可能是“Assets/StreamingAssets/VisionOSVideoClips/”。如果该文件夹不存在,则创建该文件夹。确保剪辑不仅移入此文件夹,而且复制到其中,以便有两个实例 - 一个由“VisionOSVideoComponent”引用,另一个在“StreamingAssets”文件夹下。有关Unity“StreamingAssets”文件夹的更多信息,请参阅Special folder names和Streaming Assets。

    有关更多信息,请参阅“StreamingAssets”文件夹中的Unity文档。

    VisionOSVideoComponent

    “VisionOSVideoComponent”组件显示以下属性:

    Property Description
    TargetMaterialRenderer 参考视频渲染的MeshRenderer。视频将覆盖MeshRenderer上的当前材质。
    Clip 要播放的视频资源。
    IsLooping 当播放到达剪辑末尾时视频是否应重复。
    PlayOnAwake 当调用“Awake()”时视频是否应该开始播放。
    Mute 如果为true,则禁止音频播放;如果为false,则考虑音量值。
    Volume 剪辑的当前音频播放音量,范围在0到1之间。

    在运行时,您可以使用以下方法来控制视频播放:

    Method Description
    GetState() 获取视频播放器的当前状态。
    Play() 开始播放。
    Stop() 停止播放,并将当前播放时间设置为0。
    Pause() 暂停播放并保持当前播放时间不变。
    GetDirectAudioMute() 获取指定轨道的直接输出音频静音状态 - 请注意,目前只有轨道索引0有效。
    SetDirectAudioMute() 设置指定轨道的直接输出音频静音状态 - 请注意,目前只有轨道索引0有效。
    GetDirectAudioVolume() 获取指定音轨的直接输出音频音量 - 请注意,当前仅轨道指数 0 有效。
    SetDirectAudioVolume() 设置指定音轨的直接输出音频音量 - 请注意,当前仅轨道指数 0 有效。

    Unity Video Player支持

    您可以使用Unity的默认“VideoPlayer”组件在Unity编辑器版本“2022.3.18f1”及更高版本的visionOS上播放视频。要在PolySpatial中使用这个组件,必须:

    • 将“VideoPlayer”“Render Mode”设置为“Render Texture”,然后为视频播放器提供RenderTexture作为目标纹理。
    • 将此渲染纹理应用到材质,然后像平常一样将该材质应用到渲染器。
    • 添加一个脚本,该脚本将在附加到VideoPlayer的渲染纹理上调用“PolySpatialObjectUtils.MarkDirty()”。这个“PolySpatialObjectUtils.MarkDirty()”调用应该每帧调用一次。有关手动弄脏RenderTexture的更多信息,请参阅RenderTexture文档。

    将“VideoPlayer”组件上的“Render Mode”属性设置为除“Render Texture”之外的任何值都会产生警告,并且“VideoPlayer”不会渲染任何内容。

    视频播放器与VisionOS视频组件

    选择一种视频组件而非另一种视频组件是需要权衡的。

    “VisionOSVideoComponent”利用visionOS的本地视频播放器来显示和渲染视频,使其能够以高性能的方式显示视频。但是,该组件的公共 API 比普通 VideoPlayer 组件的公共 API 受到更多限制,并且更复杂的视频播放器功能(如事件和代理)不能与之一起使用。此外,由于视频纹理是在visionOS中创建的,因此无法通过Unity访问该视频纹理。此外,“VisionOSVideoComponent”无法与PlayToDevice等调试工具一起使用。

    使用普通的“VideoPlayer”组件会带来性能成本,因为它必须每帧更新渲染纹理,但具有能够利用所有Unity VideoPlayer的广泛方法,事件和委托的优势。此外,您可以访问视频纹理,并可以像使用任何其他纹理一样使用——例如,在 shader graph 材质中使用。使用普通的“VideoPlayer”组件也允许通过网络进行流式传输,并与Play To Device配合使用。

    返回到顶部
    Copyright © 2024 Unity Technologies —
    • Your Privacy Choices (Cookie Settings)