我正在创建一个可以播放视频和查看模型的Android应用。我决定使用unity3d来完成它
我在几个场景中设置了2个功能,每个场景都有它的功能。当我想看到不同的视频或模型时,我会进入不同的场景。如果我看到模型,无论有多少型号,都可以成功运行。但是,当我看到一个视频(可能只有10M)后,当我查看模型时,应用程序更容易崩溃
我使用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-GSL :: ioctl fd 29代码0xc0140933(IOCTL_KGSL_TIMESTAMP_EVENT)失败:错误24打开文件太多
11-05 22:33:51.609 14794-14807 /? W / Adreno-GSL ::(1e,14,92844)失败24太多打开的文件
11-05 22:33:51.619 14794-14807 /? E / Surface:dequeueBuffer:IGraphicBufferProducer :: requestBuffer失败:-2147483646
也许有可能打开文件?但是只有一个视频,当我在unity3d中改变场景时它应该从内存中删除。如果您有任何想法,请与我联系。非常感谢你!
已添加:实际上我认为我的问题与the question相同。它是Unity3d的Bug吗?
答案 0 :(得分:0)
试试这个:
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.
}
答案 1 :(得分:0)
试试这段代码:
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);
}