Видеоплеер Unity как приостановить и воспроизвести

#c# #unity3d #vuforia

#c# #unity3d #vuforia

Вопрос:

Я пытаюсь создать видеоплеер Vuforia с виртуальными кнопками, но когда я пытаюсь приостановить и воспроизвести, это выдает ошибку. Я просмотрел некоторые форумы и некоторые старые вопросы, но они не решили мою проблему. Ошибка:

 Assetsvp_time.cs(23,9): error CS0120: An object reference is required for the non-static field, method, or property 'VideoPlayer.Pause()'
Assetsvp_time.cs(27,9): error CS0120: An object reference is required for the non-static field, method, or property 'VideoPlayer.Play()'
 

Код:

 using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;
using Vuforia;

public class vp_time : MonoBehaviour
{

    public GameObject vbBtnObj;
    public GameObject vbVpObj;

    // Start is called before the first frame update
    void Start()
    {
        vbBtnObj = GameObject.Find("VideoBtn");
        vbBtnObj.GetComponent<VirtualButtonBehaviour>().RegisterOnButtonPressed(OnButtonPressed);
        vbBtnObj.GetComponent<VirtualButtonBehaviour>().RegisterOnButtonReleased(OnButtonReleased);
        vbVpObj.GetComponent<VideoPlayer>();
    }

    public void OnButtonPressed(VirtualButtonBehaviour vb){
        VideoPlayer.Pause();
    }

    public void OnButtonReleased(VirtualButtonBehaviour vb){
        VideoPlayer.Play();
    }

    // Update is called once per frame
    void Update()
    {

    }
}
 

Ответ №1:

Ну, как говорится в ошибке VideoPlayer , это тип. У него нет static метода VideoPlayer.Play . Вам нужна ссылка на экземпляр type VideoPlayer и вызов метода для этого экземпляра.

 vbVpObj.GetComponent<VideoPlayer>();
 

эта строка абсолютно ничего не делает!

Вы скорее хотели сохранить эту ссылку в поле

 // Drag this already in via the Inspector in Unity
[SerializeField] private VideoPlayer videoPlayer;
 

или сделать

 private void Start ()
{
    ...

    // As fallback get the reference on runtime ONCE
    if(!videoPlayer) videoPlayer = vbVpObj.GetComponent<VideoPlayer>();
}
 

и позже

 videoPlayer.Play();
 

и

 videoPlayer.Pause();