c# - पता लगाएँ कि वीडियो प्लेअर कब खेल चुका है



events unity3d (1)

मैं VideoPlayer एपीआई से होने वाली घटनाओं पर भरोसा नहीं करता या इसका उपयोग नहीं करता क्योंकि मैं उनके साथ भी समस्याओं में दौड़ रहा हूं आप जो देखते हैं वह एक बग है जो महीनों के लिए निर्धारित नहीं किया गया है।

यदि आप जानना चाहते हैं कि वीडियो खेलना समाप्त हो गया है, तो वीडियो videoPlayer.isPlaying जांच करने के लिए एक videoPlayer.isPlaying उपयोग videoPlayer.isPlaying प्रत्येक फ्रेम लूप में videoPlayer.isPlaying जब लूप मौजूद है, तो इसका मतलब है कि वीडियो ने खेलना समाप्त कर दिया है।

while (videoPlayer.isPlaying)
{
    yield return null;
}

//Done Playing

मैं यह जाँचने के लिए अभी परीक्षण नहीं कर सकता कि क्या विराम फ़ंक्शन videoPlayer.isPlaying प्रभावित करता है। videoPlayer.isPlaying लेकिन आप स्वयं द्वारा यह परीक्षण कर सकते हैं

ऐसा करने का एक और तरीका यह है कि frame को समान- frame समान है या नहीं यह frameCount । जब यह सत्य है, तो आप जानते हैं कि वीडियो ने खेल खत्म कर दिया है।

if(videoPlayer.frame == videoPlayer.frameCount)
{
    //Video has finshed playing!
}

अगर इनमें से कोई भी आपकी समस्या का समाधान नहीं करता है तो बग रिपोर्ट के लिए फ़ाइल

मेरे पास मूवी कंट्रोलर वर्ग है जो मेरी प्रोजेक्ट में वीडियो प्रबंधित करता है। मैं यूनिटी 5.6 में पेश किया गया नया वीडियो प्लेयर घटक का उपयोग कर रहा हूं।

मैं एक पद्धति को कॉल करना चाहूंगा जब कोई मूवी खेल खत्म हो जाए। अब तक, यह विधि केवल Debug.Log है। Debug.Log , जैसा कि आप देख सकते हैं:

using UnityEngine;
using UnityEngine.Video;

public class MovieController : MonoBehaviour
{
    private VideoPlayer m_VideoPlayer;

    void Awake () 
    {
        m_VideoPlayer = GetComponent<VideoPlayer>();
        m_VideoPlayer.loopPointReached += OnMovieFinished; // loopPointReached is the event for the end of the video
    }

    void OnMovieFinished(VideoPlayer player)
    {
        Debug.Log("Event for movie end called");
        player.Stop();
    }
}

मेरी समस्या यह है कि OnMovieFinished को वीडियो के अंत में नहीं बुलाया गया है, और मैं सिर्फ एक ब्लैक स्क्रीन के साथ समाप्त होता है और कंसोल में कुछ नहीं।





unity5