我正在创建一个android应用程序,它可以播放视频和查看模型。我决定使用unity3d来完成它。
我在几个场景中设置了两个函数,每个场景都有自己的功能。当我想看不同的视频或模型时,我会进入不同的场景。如果我看到模型,不管有多少模型,它都能成功运行。但是,如果当我看到视频(可能只有1000万)时,当我查看模型时,这个应用程序更有可能崩溃。
我使用Handheld.PlayFullScreenMovie()在unity3d中播放视频。android中的错误如下所示。
11-05 22:33:51.589 14794-14807/?I/Adreno: DequeueBuffer: dequeueBuffer失败 11-05 22:33:51.609 14794-14807/?W/Adreno::ioctl 29代码0xc0140933 (IOCTL_KGSL_TIMESTAMP_EVENT)失败: errno 24太多打开的文件 11-05 22:33:51.609 14794-14807/?W/Adreno::(1e,14,92844)失败了24个太多打开的文件 11-05 22:33:51.619 14794-14807/?E/Surface: dequeueBuffer: IGraphicBufferProducer::requestBuffer:-2147483646
也许也有可能打开文件?但是只有一个视频,当我在unity3d中改变场景时,它应该已经从内存中删除了。如果您对此有任何意见,请与我联系。非常感谢!
补充说:实际上,我想我的问题和问题是是一样的。是Unity3d的臭虫吗?
发布于 2016-11-05 15:46:24
试试这个:
void Start()
{
StartCoroutine(ShowMotion());
}
IEnumerator ShowMotion()
{
Handheld.PlayFullScreenMovie("motion.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput);
yield return new WaitForEndOfFrame();
yield return new WaitForEndOfFrame();//not writing the second yield return causes a failure.
}发布于 2016-11-05 17:22:53
试试下面的代码:
GameObject allObjects;
void Start()
{
allObjects = GameObject.FindObjectsOfType<GameObject>();
StartCoroutine(StartMovie());
}
IEnumerator StartMovie()
{
foreach(GameObject obj in allObjects)
obj.SetActive(false);
yield return new WaitForEndOfFrame();
Handheld.PlayFullScreenMovie("motion.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput);
}https://stackoverflow.com/questions/40439940
复制相似问题