无法加载,因为已经加载了另一个具有相同文件的 AssetBundle

安卓

我想在 AR 相机中播放视频。我总共有 10 个视频和一个视频播放器。我正在从服务器下载视频播放器作为资产包,名称为 videoplayer.unit3d 并存储到 SD 卡中。当我扫描 imageTarget 时,我正在使用AssetBundle.LoadFromFile()函数读取视频资产包文件,并且第一次它工作正常。

如果我扫描第二个 imageTarget 它会显示以下错误

“无法加载,因为已经加载了另一个具有相同文件的 AssetBundle”

我试过 a bundle.Unload(true);andCaching.cleanchache()但它不工作抛出同样的错误。也试过bundle.Unload(false);

 private void loadObject(string resourcePath, string objectName, TrackableBehaviour trackableBehaviuor, string videoUrl)
    {

        Debug.Log("Resource path " + resourcePath + " objectName " + objectName);

        Debug.Log("Video Url from sd card   " + videoUrl);

        FileInfo fileInfo = new FileInfo(resourcePath);

        if (!fileInfo.Exists)
            return;


        Debug.Log("File is present");
        AssetBundle bundle = AssetBundle.LoadFromFile(resourcePath, 0, 0);//www.assetBundle;


        Debug.Log("Bundle data is  " + bundle);
        if (bundle == null)
        {
            AndroidJavaObject jObject = new AndroidJavaObject("com.ezvidya.buzzle.activity.UnityActivity");
            jObject.Call("showErrorDialog");
            return;
        }
        else
        {
            AndroidJavaObject jo = new AndroidJavaObject("com.ezvidya.buzzle.activity.UnityActivity");
            jo.Call("closeScanDialog");
        }

        //Load an asset from the loaded bundle
        AssetBundleRequest bundleRequest = bundle.LoadAssetAsync(objectName, typeof(GameObject));

        //bundle.Unload(false);
        Caching.CleanCache();

        //get object
        GameObject cubeFromSDCard = bundleRequest.asset as GameObject;


        if (cubeFromSDCard != null)
        {
            // instantiate augmentation object and parent to trackable
            GameObject augmentation = (GameObject)GameObject.Instantiate(cubeFromSDCard);

            augmentation.transform.parent = trackableBehaviuor.gameObject.transform;

            augmentation.transform.localPosition = cubeFromSDCard.transform.localPosition;//new Vector3(0f, 0f, 0f);
            augmentation.transform.localRotation = cubeFromSDCard.transform.localRotation;//Quaternion.identity;
            augmentation.transform.localEulerAngles = cubeFromSDCard.transform.localEulerAngles;
            augmentation.transform.localScale = cubeFromSDCard.transform.localScale;// new Vector3(22f, 22f, 22f);

            Debug.Log("$$$$$$$$$$$$$$$$  Local Position from asset object " + cubeFromSDCard.transform.localPosition);
            Debug.Log("$$$$$$$$$$$$$$$$  Local Rotation from asset object " + cubeFromSDCard.transform.localEulerAngles);
            Debug.Log("$$$$$$$$$$$$$$$$  Local Scale from asset object " + cubeFromSDCard.transform.localScale);


            Debug.Log("$$$$$$$$$$$$$$$$  Position from asset object " + cubeFromSDCard.transform.position);
            Debug.Log("$$$$$$$$$$$$$$$$  Rotation from asset object " + cubeFromSDCard.transform.eulerAngles);
            Debug.Log("$$$$$$$$$$$$$$$$  Scale from asset object " + cubeFromSDCard.transform.lossyScale);


            // Caching.CleanCache();
            if (videoUrl != null && videoUrl.Length > 0)
            {
                VideoPlaybackBehaviour video = augmentation.GetComponent<VideoPlaybackBehaviour>();

                video.m_autoPlay = true;
                Debug.Log("Autoplay is " + video.AutoPlay);
                video.m_path = videoUrl;

                // Pause other videos before playing this one
                // Play this video on texture where it left off

                //OnTrackingFound(false);

                if (video != null && video.AutoPlay)
                {
                    VideoPlayerHelper.MediaState state = video.VideoPlayer.GetStatus();
                    if (state == VideoPlayerHelper.MediaState.PAUSED ||
                        state == VideoPlayerHelper.MediaState.READY ||
                        state == VideoPlayerHelper.MediaState.STOPPED)
                    {
                        // Pause other videos before playing this one
                        PauseOtherVideos(video);

                        // Play this video on texture where it left off
                        video.VideoPlayer.Play(false, 0);
                    }
                    else if (state == VideoPlayerHelper.MediaState.REACHED_END)
                    {
                        // Pause other videos before playing this one
                        PauseOtherVideos(video);

                        // Play this video from the beginning
                        video.VideoPlayer.Play(false, 0);
                    }

                }                

            }

            augmentation.gameObject.SetActive(true);
        }

        //bundle.Unload(false);
    }

安卓

我找到了答案,在InstantiateGameobject 调用bundle.Unload(false);它之后解决了我的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

UnityWebRequestAssetBundle 加载 assetbundle 为空

来自分类Dev

Unity3d加载assetbundle

来自分类Dev

无法加载 AssetBundle,因为“它与较新版本的 Unity 运行时不兼容”

来自分类Dev

我如何从Assetbundle加载和实例化任何游戏对象?

来自分类Dev

yii2 @bower无法从assetbundle文件中解析

来自分类Dev

制作场景时的Assetbundle大小问题(.unity3d文件)

来自分类Dev

有效的 AssetBundle 会在任何 API 调用中引发空引用异常 (NRE)

来自分类Dev

如何添加仅在yii2的一页中添加的assetbundle js / css?

来自分类Dev

无法跟踪,因为另一个实例具有相同的键值

来自分类Dev

无法跟踪实体类型“ x”的实例,因为已经跟踪了具有相同的{'a','b'}键值的另一个实例

来自分类Dev

无法跟踪实体类型“ TestType”的实例,因为已经跟踪了具有相同键的该类型的另一个实例

来自分类Dev

如何将Assetbundle下载到IOS / Android的app文件夹中并从中获取所需的模型?

来自分类Dev

在主布局中使用<script>标记而不是在Yii PHP框架中使用AssetBundle有什么问题?

来自分类常见问题

ASP.NET MVC-附加类型为“ MODELNAME”的实体失败,因为相同类型的另一个实体已经具有相同的主键值

来自分类Dev

“附加类型T的实体失败,因为相同类型的另一个实体已经具有相同的主键值”

来自分类Dev

EF,Automapper异常,“附加类型...的实体失败,因为相同类型的另一个实体已经具有相同的主键值”

来自分类Dev

附加“ModelName”类型的实体失败,因为另一个相同类型的实体已经具有相同的主键值

来自分类Dev

EF Core:无法跟踪实体类型的实例,因为另一个具有相同键值的实例

来自分类Dev

如何将具有特定扩展名的相同文件复制到终端中的另一个目录

来自分类Dev

在ajax调用中包含另一个php文件有效,但无法加载javascript文件

来自分类Dev

Nifi ExecuteGroovyScript - 类已经加载到另一个类加载器中

来自分类Dev

Yii2向AssetBundle添加条件

来自分类Dev

服务器上的AssetBundle Unity

来自分类Dev

Yii2 AssetBundle publishOptions模式语法?

来自分类Dev

Unity3D 更新本地 assetBundle

来自分类Dev

卸载assetbundle场景时Unity iOS崩溃

来自分类Dev

无法将脚本文件加载到另一个脚本文件中

来自分类Dev

无法跟踪实体类型 <T> 的实例,因为已跟踪另一个具有相同 {'Id'} 键值的实例

来自分类Dev

SafariView仅加载一个网址,似乎无法加载另一个网址

Related 相关文章

  1. 1

    UnityWebRequestAssetBundle 加载 assetbundle 为空

  2. 2

    Unity3d加载assetbundle

  3. 3

    无法加载 AssetBundle,因为“它与较新版本的 Unity 运行时不兼容”

  4. 4

    我如何从Assetbundle加载和实例化任何游戏对象?

  5. 5

    yii2 @bower无法从assetbundle文件中解析

  6. 6

    制作场景时的Assetbundle大小问题(.unity3d文件)

  7. 7

    有效的 AssetBundle 会在任何 API 调用中引发空引用异常 (NRE)

  8. 8

    如何添加仅在yii2的一页中添加的assetbundle js / css?

  9. 9

    无法跟踪,因为另一个实例具有相同的键值

  10. 10

    无法跟踪实体类型“ x”的实例,因为已经跟踪了具有相同的{'a','b'}键值的另一个实例

  11. 11

    无法跟踪实体类型“ TestType”的实例,因为已经跟踪了具有相同键的该类型的另一个实例

  12. 12

    如何将Assetbundle下载到IOS / Android的app文件夹中并从中获取所需的模型?

  13. 13

    在主布局中使用<script>标记而不是在Yii PHP框架中使用AssetBundle有什么问题?

  14. 14

    ASP.NET MVC-附加类型为“ MODELNAME”的实体失败,因为相同类型的另一个实体已经具有相同的主键值

  15. 15

    “附加类型T的实体失败,因为相同类型的另一个实体已经具有相同的主键值”

  16. 16

    EF,Automapper异常,“附加类型...的实体失败,因为相同类型的另一个实体已经具有相同的主键值”

  17. 17

    附加“ModelName”类型的实体失败,因为另一个相同类型的实体已经具有相同的主键值

  18. 18

    EF Core:无法跟踪实体类型的实例,因为另一个具有相同键值的实例

  19. 19

    如何将具有特定扩展名的相同文件复制到终端中的另一个目录

  20. 20

    在ajax调用中包含另一个php文件有效,但无法加载javascript文件

  21. 21

    Nifi ExecuteGroovyScript - 类已经加载到另一个类加载器中

  22. 22

    Yii2向AssetBundle添加条件

  23. 23

    服务器上的AssetBundle Unity

  24. 24

    Yii2 AssetBundle publishOptions模式语法?

  25. 25

    Unity3D 更新本地 assetBundle

  26. 26

    卸载assetbundle场景时Unity iOS崩溃

  27. 27

    无法将脚本文件加载到另一个脚本文件中

  28. 28

    无法跟踪实体类型 <T> 的实例,因为已跟踪另一个具有相同 {'Id'} 键值的实例

  29. 29

    SafariView仅加载一个网址,似乎无法加载另一个网址

热门标签

归档