Browse Source

增加退出场景功能

“hujiajun” 1 year ago
parent
commit
6e00ef5b65
30 changed files with 1857 additions and 1333 deletions
  1. 1 0
      Assets/HotUpdate/DownLoadItem.cs
  2. 1 1
      Assets/HotUpdate/GameInit.cs
  3. 86 4
      Assets/HotUpdate/GameManager.cs
  4. 1 1
      Assets/HotUpdate/GameScene.cs
  5. 8 2
      Assets/HotUpdate/GongShi2.cs
  6. 62 8
      Assets/HotUpdate/LoadManager.cs
  7. 4 1
      Assets/HotUpdate/LoadReference.cs
  8. 95 49
      Assets/HotUpdate/ModelItem.cs
  9. 65 35
      Assets/HotUpdate/ModelList.cs
  10. 2 2
      Assets/HotUpdate/ModelManager.cs
  11. 1 1
      Assets/HotUpdate/MoveChange.cs
  12. 3 2
      Assets/HotUpdate/PointFileGetUrlCommand.cs
  13. 7 1
      Assets/HotUpdate/SChooseItem.cs
  14. 6 2
      Assets/HotUpdate/SRTitleLayout.cs
  15. 26 11
      Assets/HotUpdate/SpotsItem.cs
  16. 13 1
      Assets/HotUpdate/UserSceneItem.cs
  17. 1 0
      Assets/HotUpdate/UserSceneManager.cs
  18. 1 1
      Assets/HotUpdate/UserSceneUI.cs
  19. 15 3
      Assets/HotUpdate/VufroiaTrigger.cs
  20. 4 0
      Assets/HybridCLRGenerate/link.xml
  21. 0 174
      Assets/MRNavigatorPro.unity
  22. 377 477
      Assets/MRNavigatorStart/MRNavigatorStart.prefab
  23. 454 468
      Assets/Resources/SceneChoose2.prefab
  24. 15 18
      Assets/Resources/Warning/WarningPopUp.prefab
  25. 102 11
      Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Anton SDF.asset
  26. 94 11
      Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Bangers SDF.asset
  27. 75 11
      Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Electronic Highway Sign SDF.asset
  28. 105 14
      Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Oswald Bold SDF.asset
  29. 102 11
      Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Roboto-Bold SDF.asset
  30. 131 13
      Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset

+ 1 - 0
Assets/HotUpdate/DownLoadItem.cs

@@ -58,6 +58,7 @@ public class DownLoadItem : MonoBehaviour
         this.id = id;
         this.id = id;
         this.type = type;
         this.type = type;
         this.updateTime = updateTime;
         this.updateTime = updateTime;
+        Debug.Log("UnityWebRequest webRequest"+ downLoadPath);
         LoadManager.Instance.downloadQueueList.Enqueue(this);
         LoadManager.Instance.downloadQueueList.Enqueue(this);
     }
     }
 
 

+ 1 - 1
Assets/HotUpdate/GameInit.cs

@@ -60,7 +60,7 @@ public class GameInit : MonoBehaviour
             StartCoroutine(DownLoadAssets(false));
             StartCoroutine(DownLoadAssets(false));
 
 
         }
         }
-        TestDownloadObject("");
+     //   TestDownloadObject("");
     }
     }
 
 
 
 

+ 86 - 4
Assets/HotUpdate/GameManager.cs

@@ -36,6 +36,8 @@ using XRTool.Util;
  */
  */
 public class GameManager : MonoSingleton<GameManager>
 public class GameManager : MonoSingleton<GameManager>
 {
 {
+    public LoadReference loadref;
+    public GameObject armapObj;
     public ARMap armap;
     public ARMap armap;
     public Text text;
     public Text text;
     public GameObject Map;
     public GameObject Map;
@@ -296,15 +298,79 @@ public class GameManager : MonoSingleton<GameManager>
             }
             }
         }
         }
     }
     }
+
+    public Text t;
+
+    public void foundmap()
+    {
+        t.text = "发现地图";
+    }
+
+    public void lostmap()
+    {
+
+        t.text = "地图丢失";
+    }
+
+    public void destroyGo(UnityEngine.Object go)
+    {
+        if(go)
+        {
+
+            Debug.Log("destroyGo===>" + go.name);
+            Destroy(go);
+        }
+    }
+    public GameObject go20exit;
+    public GameObject go21exit;
+    public void show20exitpop(bool isshow)
+    {
+        go20exit.SetActive(isshow);
+    }
+    public void show21exitpop(bool isshow)
+    {
+        go21exit.SetActive(isshow);
+    }
+
+    public void exitscene2()
+    {
+        GameScene.Instance.o20.SetActive(false);
+        //m_SetBtn.gameObject.SetActive(false);
+        destroyGo(LoadManager.Instance.datFileObj);
+        destroyGo(LoadManager.Instance.xmlFileDownObj);
+        MsgHandler.ClearAllListeners();
+        UserSceneManager.Instance.SceneList[UserSceneManager.Instance.nowId].Clear();
+        GameScene.Instance.ShowScenes();
+        UserSceneUI.Instance.obj.GetComponent<UserChooseScene>().st.SetActive(false);
+        UserSceneUI.Instance.obj.GetComponent<UserChooseScene>().cs.SetActive(true);
+    }
     public List<SceneValue> sucessvalues;
     public List<SceneValue> sucessvalues;
     public void exitscene()
     public void exitscene()
-    { 
+    {
+        Destroy(loadref.goRefrence);
+        loadref.goRefrence = null;
+        armapObj.transform.parent.position = Vector3.zero;
+        armapObj.transform.parent.eulerAngles = Vector3.zero;
+        t.text = "退出场景后";
+        MoveChange.isCx = false;
+        SetLocalTime.isFind = true;
         ARSpace.isFind=false;
         ARSpace.isFind=false;
         allobjs.Clear();
         allobjs.Clear();
+        ARSpace.transformToSpace.Clear();
+        ARSpace.spaceToTransform.Clear();
+        ARSpace.mapIdToOffset.Clear();
+        ARSpace.mapIdToMap.Clear();
+        
+        armap.FreeMap();
+        Destroy(armap);
+        armap = armapObj.AddComponent<ARMap>();
+        armap.OnFirstLocalization = new MapLocalizedEvent();
+        armap.OnFirstLocalization.AddListener(firstfound);
+        XRLocalizer.Instance.Reset();
         m_IroBot.gameObject.SetActive(false);
         m_IroBot.gameObject.SetActive(false);
         RouteCtr.CurrentPoints.Clear();
         RouteCtr.CurrentPoints.Clear();
        m_SetBtn.gameObject.SetActive(false);
        m_SetBtn.gameObject.SetActive(false);
-        armap.FreeMap();
+      //  armap.FreeMap();
         m_MinMap.gameObject.SetActive(false);
         m_MinMap.gameObject.SetActive(false);
         for (int i = 0; i < RouteCtr.list_route.Count; i++)
         for (int i = 0; i < RouteCtr.list_route.Count; i++)
         {
         {
@@ -369,9 +435,25 @@ public class GameManager : MonoSingleton<GameManager>
 
 
 }
 }
 
 
+    public void firstfound(int arg0)
+    {
+
+       t.text = "第一次发现_"+ arg0;
+    }
+
     public bool isShowDownTip;
     public bool isShowDownTip;
     private void Start()
     private void Start()
     {
     {
+        ARSpace.transformToSpace.Clear();
+        ARSpace.spaceToTransform.Clear();
+        ARSpace.mapIdToOffset.Clear();
+        ARSpace.mapIdToMap.Clear();
+        armap = armapObj.AddComponent<ARMap>();
+        armap.OnFirstLocalization = new MapLocalizedEvent();
+        armap.OnFirstLocalization.AddListener(firstfound);
+        armapObj.transform.parent.position = Vector3.zero;
+        armapObj.transform.parent.eulerAngles = Vector3.zero;
+        //  XRLocalizer.Instance.Reset();
 #if UNITY_EDITOR
 #if UNITY_EDITOR
         ArchitectureInitiator.Initiate();
         ArchitectureInitiator.Initiate();
 #endif
 #endif
@@ -865,8 +947,8 @@ public class GameManager : MonoSingleton<GameManager>
         }
         }
         else
         else
         {
         {
-            sc3D20zuJD.isOn = false;
+          //  sc3D20zuJD.isOn = false;
-            sc3Dopen20zu.isOn = false;
+          //  sc3Dopen20zu.isOn = false;
         }
         }
         SaveButton.SetActive(ison);
         SaveButton.SetActive(ison);
 
 

+ 1 - 1
Assets/HotUpdate/GameScene.cs

@@ -20,7 +20,7 @@ public class GameScene : MonoSingleton<GameScene>
         (UserSceneUI.Instance).show();
         (UserSceneUI.Instance).show();
         UIManager.Instance.HideUI(UINameConfig.LoadingPanel);
         UIManager.Instance.HideUI(UINameConfig.LoadingPanel);
         UIManager.Instance.HideUI(UINameConfig.LoginPanel);
         UIManager.Instance.HideUI(UINameConfig.LoginPanel);
-        o20.SetActive(true);
+        o20.SetActive(false);
         o21.SetActive(false);
         o21.SetActive(false);
         o20.transform.parent.gameObject.SetActive(true);
         o20.transform.parent.gameObject.SetActive(true);
     }
     }

+ 8 - 2
Assets/HotUpdate/GongShi2.cs

@@ -21,17 +21,23 @@ public class GongShi2 : MonoBehaviour
     public static GameObject WebPosObj2;
     public static GameObject WebPosObj2;
     static IEnumerator startjisuan(float x2, float y2, float th, float tw, float x22, float y22, float sceneLength, float sceneWidth)
     static IEnumerator startjisuan(float x2, float y2, float th, float tw, float x22, float y22, float sceneLength, float sceneWidth)
     {
     {
+        Debug.Log("startjisuanstartjisuanstartjisuanstartjisuan");
         Transform parent = (SceneIOCContainer.Instance.Pull("mesh_test") as GameObject).transform;
         Transform parent = (SceneIOCContainer.Instance.Pull("mesh_test") as GameObject).transform;
 
 
         parent.transform.localPosition = Vector3.zero;
         parent.transform.localPosition = Vector3.zero;
-        parent.transform.eulerAngles = Vector3.zero;
+        parent.transform.localEulerAngles = Vector3.zero;
 
 
         if (WebPosObj == null)
         if (WebPosObj == null)
             WebPosObj = new GameObject();
             WebPosObj = new GameObject();
 
 
         if (WebPosObj2 == null)
         if (WebPosObj2 == null)
             WebPosObj2 = new GameObject();
             WebPosObj2 = new GameObject();
-
+        WebPosObj.name = "WebPosObj";
+        WebPosObj2.name = "WebPosObj2";
+        WebPosObj.transform.position = Vector3.zero;
+        WebPosObj.transform.eulerAngles = Vector3.zero;
+        WebPosObj2.transform.position = Vector3.zero;
+        WebPosObj2.transform.eulerAngles = Vector3.zero;
         //  Transform meshTestParent =(SceneIOCContainer.Instance.Pull("ARSpaceForAll") as GameObject).transform;
         //  Transform meshTestParent =(SceneIOCContainer.Instance.Pull("ARSpaceForAll") as GameObject).transform;
         //创建空锚点GameObject
         //创建空锚点GameObject
         GameObject go = WebPosObj;
         GameObject go = WebPosObj;

+ 62 - 8
Assets/HotUpdate/LoadManager.cs

@@ -45,8 +45,39 @@ public class LoadManager : Singleton<LoadManager>
 
 
     }
     }
 
 
+
+    public Dictionary<string, List<Action<float>>> onProgresslist = new Dictionary<string, List<Action<float>>>();
+
+    public Dictionary<string, List<Action<byte[]>>> callbacklist = new Dictionary<string, List<Action<byte[]>>>();
+
+    public void setaction(string id,Action<float> onProgress, Action<byte[]> callback)
+    {
+        if(onProgresslist.ContainsKey(id))
+        {
+            onProgresslist[id].Add(onProgress);
+        }
+        else
+        {
+            List<Action<float>> f = new List<Action<float>>();
+            f.Add(onProgress);
+            onProgresslist.Add(id, f);
+        }
+
+
+        if (callbacklist.ContainsKey(id))
+        {
+            callbacklist[id].Add(callback);
+        }
+        else
+        {
+            List < Action <byte[]>> c = new List<Action<byte[]>>();
+            c.Add(callback);
+            callbacklist.Add(id, c);
+        }
+    }
+
     public Dictionary<string, DownLoadItem> downList = new Dictionary<string, DownLoadItem>();
     public Dictionary<string, DownLoadItem> downList = new Dictionary<string, DownLoadItem>();
-    public void load(ModelItem model, Action<float> onProgress, Action<GameObject> callback)
+    public void load(ModelItem model, Action<float> onProgress, Action<byte[]> callback)
     {
     {
         string dName = getLoadName(model.url, model.Version);
         string dName = getLoadName(model.url, model.Version);
         Debug.Log("dName ======>   " + dName+ "   model.url==>"+ model.url);
         Debug.Log("dName ======>   " + dName+ "   model.url==>"+ model.url);
@@ -57,16 +88,20 @@ public class LoadManager : Singleton<LoadManager>
             dli.Init(model.url, model.uid ,model.modelType,model.updateTime);
             dli.Init(model.url, model.uid ,model.modelType,model.updateTime);
             downList.Add(dName, dli);
             downList.Add(dName, dli);
         }
         }
-        
+        setaction(dName, onProgress, callback);
 
 
         downList[dName].onProgress += (float f) => {
         downList[dName].onProgress += (float f) => {
 
 
-            onProgress.Invoke(f);
+            for (int i = 0; i < onProgresslist[dName].Count; i++)
+            {
+
+                onProgresslist[dName][i].Invoke(f);
+            }
         };
         };
 
 
         downList[dName].callback += (bool b) => {
         downList[dName].callback += (bool b) => {
 
 
-            if(b)
+            if (b)
             {
             {
                 if (!downList[dName].isAction)
                 if (!downList[dName].isAction)
                 {
                 {
@@ -93,7 +128,11 @@ public class LoadManager : Singleton<LoadManager>
 
 
                       //  model.initFrist();
                       //  model.initFrist();
                     }
                     }
-                    callback.Invoke(model.prefabModel);
+
+                    for (int i = 0; i < callbacklist[dName].Count; i++)
+                    {
+                        callbacklist[dName][i].Invoke(downList[dName].downLoadData);
+                    }
                 }
                 }
 
 
             }
             }
@@ -103,7 +142,8 @@ public class LoadManager : Singleton<LoadManager>
             }
             }
         };
         };
     }
     }
-
+   public GameObject datFileObj;
+    public GameObject xmlFileDownObj;
     public void loadVuforia(string xmlFile, string datFile, Action<bool> xmlcallback, Action<bool> datcallback)
     public void loadVuforia(string xmlFile, string datFile, Action<bool> xmlcallback, Action<bool> datcallback)
     {
     {
         if (!Directory.Exists(Application.persistentDataPath + "/StreamingAssets"))
         if (!Directory.Exists(Application.persistentDataPath + "/StreamingAssets"))
@@ -115,7 +155,7 @@ public class LoadManager : Singleton<LoadManager>
             }
             }
         }
         }
 
 
-        GameObject xmlFileDownObj = new GameObject("VufroiaTriggerDownLoad_xmlFile");
+        xmlFileDownObj = new GameObject("VufroiaTriggerDownLoad_xmlFile");
         DownLoadItem xmlFileItem = xmlFileDownObj.AddComponent<DownLoadItem>();
         DownLoadItem xmlFileItem = xmlFileDownObj.AddComponent<DownLoadItem>();
         xmlFileItem.Init(xmlFile, "VufroiaTriggerDownLoad_xmlFile",ModelType.vuforial, long.Parse(GameManager.Instance.m_scene.updateTime));
         xmlFileItem.Init(xmlFile, "VufroiaTriggerDownLoad_xmlFile",ModelType.vuforial, long.Parse(GameManager.Instance.m_scene.updateTime));
 
 
@@ -135,7 +175,7 @@ public class LoadManager : Singleton<LoadManager>
         };
         };
 
 
 
 
-        GameObject datFileObj = new GameObject("VufroiaTriggerDownLoad_datFile");
+        datFileObj = new GameObject("VufroiaTriggerDownLoad_datFile");
         DownLoadItem datFileItem = datFileObj.AddComponent<DownLoadItem>();
         DownLoadItem datFileItem = datFileObj.AddComponent<DownLoadItem>();
         datFileItem.Init(datFile, "VufroiaTriggerDownLoad_xmlFile",ModelType.vuforial, long.Parse(GameManager.Instance.m_scene.updateTime));
         datFileItem.Init(datFile, "VufroiaTriggerDownLoad_xmlFile",ModelType.vuforial, long.Parse(GameManager.Instance.m_scene.updateTime));
 
 
@@ -161,6 +201,20 @@ public class LoadManager : Singleton<LoadManager>
         return url + "_" + version;
         return url + "_" + version;
     }
     }
 
 
+    public DownLoadItem getdownloaditem(ModelItem mi)
+    {
+        if(downList.ContainsKey(getLoadName(mi.url, mi.Version)))
+        {
+
+            DownLoadItem dii = downList[getLoadName(mi.url, mi.Version)];
+            return dii;
+        }
+        else
+        {
+            return null;
+        }
+        
+    }
 
 
     public Queue<DownLoadItem> downloadQueueList = new Queue<DownLoadItem>();
     public Queue<DownLoadItem> downloadQueueList = new Queue<DownLoadItem>();
 }
 }

+ 4 - 1
Assets/HotUpdate/LoadReference.cs

@@ -3,6 +3,7 @@ using Blue;
 
 
 public class LoadReference : AbstractController
 public class LoadReference : AbstractController
 {
 {
+    public GameObject goRefrenceprefb;
     public GameObject goRefrence;
     public GameObject goRefrence;
     private Transform meshTest=>(SceneIOCContainer.Instance.Pull("mesh_test")as GameObject).transform;
     private Transform meshTest=>(SceneIOCContainer.Instance.Pull("mesh_test")as GameObject).transform;
     private Transform meshTestParent=>(SceneIOCContainer.Instance.Pull("ARSpaceForAll")as GameObject).transform;
     private Transform meshTestParent=>(SceneIOCContainer.Instance.Pull("ARSpaceForAll")as GameObject).transform;
@@ -40,7 +41,9 @@ public class LoadReference : AbstractController
 
 
     private void SetPosRot(Vector3 pos)
     private void SetPosRot(Vector3 pos)
     {
     {
-        goRefrence = Instantiate(goRefrence,meshTest);
+        if(goRefrence)
+        Destroy(goRefrence);
+        goRefrence = Instantiate(goRefrenceprefb, meshTest);
         goRefrence.name = "goRefrence";
         goRefrence.name = "goRefrence";
         SceneIOCContainer.Instance.Push("goRefrence",goRefrence);
         SceneIOCContainer.Instance.Push("goRefrence",goRefrence);
         goRefrence.transform.localPosition = pos;
         goRefrence.transform.localPosition = pos;

+ 95 - 49
Assets/HotUpdate/ModelItem.cs

@@ -1,4 +1,5 @@
 using SC.XR.Unity.Module_InputSystem;
 using SC.XR.Unity.Module_InputSystem;
+using System;
 using System.Collections;
 using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.IO;
 using System.IO;
@@ -60,13 +61,8 @@ public class ModelItem : System.ICloneable
                 //显示加载
                 //显示加载
 
 
 
 
-            }, (GameObject obj) =>
+            }, (byte[] obj) =>
             {
             {
-                _model = prefabModel;
-                obj.name = "加载出来的模型-----" + obj.name;
-                // obj.transform.parent = _model.transform;
-                //   obj.transform.localPosition = getInfoPos(); 
-                //  obj.transform.localEulerAngles = getInfoEul(); 
 
 
 
 
             });
             });
@@ -224,6 +220,7 @@ public class ModelItem : System.ICloneable
         return clonedObject;
         return clonedObject;
     }
     }
     public byte[] abByte;
     public byte[] abByte;
+    public DownLoadMaterial dmdown;
     public static bool isLoad;
     public static bool isLoad;
     public static Queue<ModelItem> loadAB = new Queue<ModelItem>();
     public static Queue<ModelItem> loadAB = new Queue<ModelItem>();
     public void SetData(byte[] data, DownLoadMaterial dm)
     public void SetData(byte[] data, DownLoadMaterial dm)
@@ -233,69 +230,118 @@ public class ModelItem : System.ICloneable
             Debug.LogError(name + " 未下载完成  !!!!!");
             Debug.LogError(name + " 未下载完成  !!!!!");
         }
         }
 
 
+        abByte = data;
 
 
-        Debug.Log("HJJTEST  ModelType   " + modelType);
+    }
-        switch (modelType)
+
+    bool isload=false;
+    public IEnumerator loadmodel()
+    {
+        DownLoadItem dloadi = LoadManager.Instance.getdownloaditem(this);
+        if (dloadi&& !isload)
         {
         {
-            case ModelType.Image:
+            isload = true;
-                Texture2D texture = new Texture2D(1, 1);
+            while (dloadi.downLoadData== null)
-                OpenCVForUnity.CoreModule.Mat _mat = null;
+            {
-                GameManager.Instance.AddThead(() =>
+                yield return null;
-                {
+            }
-                    Debug.Log("加載完成222222222222222222");
-                    _mat = GameManager.zoomByteByOpenCV(data);
 
 
-                }, () =>
-                {
-                    Debug.Log("加載完成111111111111");
-                    texture = GameManager.TextureByMat(_mat);
 
 
-                    Debug.Log(" LoadManager  " + texture.width + "_" + texture.height);
+            abByte = dloadi.downLoadData;
-                    Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.one * 0.5f);
+            dmdown = dloadi.data;
-                    TemplateImage tlimg = prefabModel.GetComponent<TemplateImage>();
+
-                    Texture2D tex = texture;
+            Debug.Log("HJJTEST  ModelType   " + modelType);
-                    if (tex.height > tex.width)
+            switch (modelType)
+            {
+                case ModelType.Image:
+                    Texture2D texture = new Texture2D(1, 1);
+                    OpenCVForUnity.CoreModule.Mat _mat = null;
+                    GameManager.Instance.AddThead(() =>
                     {
                     {
-                        float bl = ((float)tex.height / (float)tex.width);
+                        Debug.Log("加載完成222222222222222222");
-                        tlimg.transform.Find("Canvas").GetComponent<RectTransform>().sizeDelta = new Vector2(500 / bl, 500);
+                        _mat = GameManager.zoomByteByOpenCV(abByte);
-                    }
+
-                    else
+                    }, () =>
                     {
                     {
-                        float bl = ((float)tex.width / (float)tex.height);
+                        Debug.Log("加載完成111111111111");
-                        tlimg.transform.Find("Canvas").GetComponent<RectTransform>().sizeDelta = new Vector2(500, 500 / bl);
+                        texture = GameManager.TextureByMat(_mat);
-                    }
+
-                    tlimg.M_Image.sprite = sprite;
+                        Debug.Log(" LoadManager  " + texture.width + "_" + texture.height);
-                });
+                        Sprite sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.one * 0.5f);
+                        TemplateImage tlimg = prefabModel.GetComponent<TemplateImage>();
+                        Texture2D tex = texture;
+                        if (tex.height > tex.width)
+                        {
+                            float bl = ((float)tex.height / (float)tex.width);
+                            tlimg.transform.Find("Canvas").GetComponent<RectTransform>().sizeDelta = new Vector2(500 / bl, 500);
+                        }
+                        else
+                        {
+                            float bl = ((float)tex.width / (float)tex.height);
+                            tlimg.transform.Find("Canvas").GetComponent<RectTransform>().sizeDelta = new Vector2(500, 500 / bl);
+                        }
+                        tlimg.M_Image.sprite = sprite;
+                    });
+
+                    break;
+                case ModelType.Video:
+                    Debug.Log("  DownloadPath video  " );
+                    Debug.Log("  DownloadPath video  " + prefabModel.name);
+                    Debug.Log("  DownloadPath video  " + Application.persistentDataPath + "/Material/" + Path.GetFileName(DownloadPath));
+
+                    // prefabModel.GetComponent<TemplateVideo>().SetData(HttpAction.baseurvideo + DownloadPath);
+                    prefabModel.GetComponent<TemplateVideo>().SetData(Application.persistentDataPath + "/Material/" + Path.GetFileName(DownloadPath));
+                    break;
+                case ModelType.ABModel:
+                    prefabModel.GetComponent<TemplateModel>().Data = dmdown;
+                    loadAB.Enqueue(this);
+                    /*
+                    AssetBundle assetBundle = AssetBundle.LoadFromMemory(data);
+                    Debug.Log(data.Length);
+                    prefabModel.GetComponent<TemplateModel>().LoadModel(assetBundle);*/
+                    break;
+                case ModelType.Text:
+                    Debug.Log("HJJTEST  ModelType.Text   " + DownloadPath);
+                    prefabModel.GetComponent<TemplateText>().SetData(textContent, TextBJ);
+                    break;
+                default:
+                    break;
+            }
+        }
+
+    }
 
 
+    public void Clear()
+    {
+        switch (modelType)
+        {
+            case ModelType.Image:
+                if(prefabModel)
+                {
+                    Debug.Log("Clear SpotsList modelitem prefabModel" + prefabModel.name);
+                    TemplateImage tlimg = prefabModel.GetComponent<TemplateImage>();
+                    GameManager.Instance.destroyGo(tlimg.M_Image.sprite.texture);
+                    Debug.Log("Clear SpotsList modelitem prefabModel"+ prefabModel.name);
+                }
                 break;
                 break;
             case ModelType.Video:
             case ModelType.Video:
-                Debug.Log("  DownloadPath   " + DownloadPath);
-                // prefabModel.GetComponent<TemplateVideo>().SetData(HttpAction.baseurvideo + DownloadPath);
-                prefabModel.GetComponent<TemplateVideo>().SetData(Application.persistentDataPath+"/Material/"+Path.GetFileName(DownloadPath));
                 break;
                 break;
             case ModelType.ABModel:
             case ModelType.ABModel:
-                    prefabModel.GetComponent<TemplateModel>().Data = dm;
-                    abByte = data;
-                    loadAB.Enqueue(this);
-                /*
-                AssetBundle assetBundle = AssetBundle.LoadFromMemory(data);
-                Debug.Log(data.Length);
-                prefabModel.GetComponent<TemplateModel>().LoadModel(assetBundle);*/
                 break;
                 break;
             case ModelType.Text:
             case ModelType.Text:
-                Debug.Log("HJJTEST  ModelType.Text   " + DownloadPath);
-                prefabModel.GetComponent<TemplateText>().SetData(textContent, TextBJ);
                 break;
                 break;
             default:
             default:
                 break;
                 break;
         }
         }
-
+        GameManager.Instance.destroyGo(prefabModel);
-      
+        prefabModel = null;
+        isload = false;
+        Debug.Log("Clear SpotsList modelitem[i]");
     }
     }
 
 
-
     public void initModelObj()
     public void initModelObj()
     {
     {
+        GameManager.Instance.StartCoroutine(loadmodel());
         if (getInfoPos() != Vector3.zero)
         if (getInfoPos() != Vector3.zero)
         {
         {
             prefabModel.transform.localPosition = getInfoPos();
             prefabModel.transform.localPosition = getInfoPos();
@@ -313,7 +359,7 @@ public class ModelItem : System.ICloneable
         switch (modelType)
         switch (modelType)
         {
         {
             case ModelType.Text:
             case ModelType.Text:
-            prefabModel.GetComponent<TemplateText>().SetData(textContent, TextBJ);
+                prefabModel.GetComponent<TemplateText>().SetData(textContent, TextBJ);
                 YangShiTextItem ysi = prefabModel.GetComponent<YangShiTextItem>();
                 YangShiTextItem ysi = prefabModel.GetComponent<YangShiTextItem>();
                 float topf = 0.4f;
                 float topf = 0.4f;
                 float buttomf = -0.4f;
                 float buttomf = -0.4f;

+ 65 - 35
Assets/HotUpdate/ModelList.cs

@@ -1,4 +1,5 @@
 using SC.XR.Unity.Module_InputSystem;
 using SC.XR.Unity.Module_InputSystem;
+using System;
 using System.Collections;
 using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.IO;
 using System.IO;
@@ -52,7 +53,7 @@ public class ModelList: System.ICloneable
             _model = new GameObject(name);
             _model = new GameObject(name);
             _model.transform.parent = materalLibrary;
             _model.transform.parent = materalLibrary;
 
 
-            InitObjectTransform();
+           // InitObjectTransform();
             _model.SetActive(false);
             _model.SetActive(false);
             //   initModelObj();
             //   initModelObj();
         }
         }
@@ -124,10 +125,16 @@ public class ModelList: System.ICloneable
         else
         else
             return objectTransform.nowScale;
             return objectTransform.nowScale;
     }
     }
-
+    bool iscreate = false;
-    private void InitObjectTransform()
+    private void InitObjectTransform(Action callback)
     {
     {
-        if(objectTransform==null)
+        if(iscreate)
+        {
+            callback.Invoke();
+            return;
+        }
+        iscreate = true;
+        if (objectTransform==null)
         {
         {
             objectTransform = new ObjectTransform();
             objectTransform = new ObjectTransform();
            
            
@@ -149,13 +156,13 @@ public class ModelList: System.ICloneable
             case (int)MaterialType.Model:
             case (int)MaterialType.Model:
             case (int)MaterialType.Text:
             case (int)MaterialType.Text:
             case (int)MaterialType.LocaImage:
             case (int)MaterialType.LocaImage:
-                 GameManager.Instance.StartCoroutine( CreateSuCaiObj(this, Model));
+                 GameManager.Instance.StartCoroutine(CreateSuCaiObj(this, Model,  callback));
                 break;
                 break;
             case (int)MaterialType.Image_Video_Text:
             case (int)MaterialType.Image_Video_Text:
-                GameManager.Instance.StartCoroutine(CreateImage_Video_Text(this, Model));
+                GameManager.Instance.StartCoroutine(CreateImage_Video_Text(this, Model,callback));
                 break;
                 break;
             case (int)MaterialType.Model_Text:
             case (int)MaterialType.Model_Text:
-                GameManager.Instance.StartCoroutine(CreateModel_Text(this, Model));
+                GameManager.Instance.StartCoroutine(CreateModel_Text(this, Model,  callback));
                 break;
                 break;
             default:
             default:
                 break;
                 break;
@@ -168,7 +175,7 @@ public class ModelList: System.ICloneable
     /// <param name="material">素材数据</param>
     /// <param name="material">素材数据</param>
     /// <param name="spoit">景点</param>
     /// <param name="spoit">景点</param>
     /// <returns></returns>
     /// <returns></returns>
-    private IEnumerator CreateSuCaiObj(ModelList material, GameObject spoit)
+    private IEnumerator CreateSuCaiObj(ModelList material, GameObject spoit, Action callback)
     {
     {
         List<ObjectValue> objects = new List<ObjectValue>();
         List<ObjectValue> objects = new List<ObjectValue>();
         List<ModelItem> objs = material.materialList;
         List<ModelItem> objs = material.materialList;
@@ -181,7 +188,7 @@ public class ModelList: System.ICloneable
                 case (int)MaterialType.None:
                 case (int)MaterialType.None:
                     break;
                     break;
                 case (int)MaterialType.Image:
                 case (int)MaterialType.Image:
-                    var pImage = ResMgr.Instance.LoadAsync<GameObject>("Template/Prefab/Image");
+                    var pImage = ResMgr.Instance.LoadAsync<GameObject>("Image");
                     yield return pImage;
                     yield return pImage;
                     go = GameObject.Instantiate(pImage.asset as GameObject, spoit.transform);               
                     go = GameObject.Instantiate(pImage.asset as GameObject, spoit.transform);               
                     go.SetActive(true);
                     go.SetActive(true);
@@ -190,7 +197,7 @@ public class ModelList: System.ICloneable
                     //imageitem.SetData(mat, material.updateTime);
                     //imageitem.SetData(mat, material.updateTime);
                     break;
                     break;
                 case (int)MaterialType.Video:
                 case (int)MaterialType.Video:
-                    var pVideo = ResMgr.Instance.LoadAsync<GameObject>("Template/Prefab/Video");
+                    var pVideo = ResMgr.Instance.LoadAsync<GameObject>("Video");
                     yield return pVideo;
                     yield return pVideo;
                     go = GameObject.Instantiate(pVideo.asset as GameObject, spoit.transform);                   
                     go = GameObject.Instantiate(pVideo.asset as GameObject, spoit.transform);                   
                     go.SetActive(true);
                     go.SetActive(true);
@@ -201,7 +208,7 @@ public class ModelList: System.ICloneable
                     //videoitem.SetData(mat, material.updateTime);
                     //videoitem.SetData(mat, material.updateTime);
                     break;
                     break;
                 case (int)MaterialType.Model:
                 case (int)MaterialType.Model:
-                    var pModel = ResMgr.Instance.LoadAsync<GameObject>("Template/Prefab/Model");
+                    var pModel = ResMgr.Instance.LoadAsync<GameObject>("Model");
                     yield return pModel;
                     yield return pModel;
                     go = GameObject.Instantiate(pModel.asset as GameObject, spoit.transform);                 
                     go = GameObject.Instantiate(pModel.asset as GameObject, spoit.transform);                 
                     go.SetActive(true);
                     go.SetActive(true);
@@ -211,7 +218,7 @@ public class ModelList: System.ICloneable
                     //Debug.Log(modelitem.Data.localSavePath);
                     //Debug.Log(modelitem.Data.localSavePath);
                     break;
                     break;
                 case (int)MaterialType.Text:
                 case (int)MaterialType.Text:
-                    var pText = ResMgr.Instance.LoadAsync<GameObject>("Template/Prefab/Text");
+                    var pText = ResMgr.Instance.LoadAsync<GameObject>("Text");
                     yield return pText;
                     yield return pText;
                     go = GameObject.Instantiate(pText.asset as GameObject, spoit.transform);              
                     go = GameObject.Instantiate(pText.asset as GameObject, spoit.transform);              
                     go.SetActive(true);
                     go.SetActive(true);
@@ -220,7 +227,7 @@ public class ModelList: System.ICloneable
                     //textitem.SetData(mat, material.updateTime);
                     //textitem.SetData(mat, material.updateTime);
                     break;
                     break;
                 case (int)MaterialType.LocaImage:
                 case (int)MaterialType.LocaImage:
-                    var pLocaImage = ResMgr.Instance.LoadAsync<GameObject>("Template/Prefab/Image");
+                    var pLocaImage = ResMgr.Instance.LoadAsync<GameObject>("Image");
                     yield return pLocaImage;
                     yield return pLocaImage;
                     go = GameObject.Instantiate(pLocaImage.asset as GameObject, spoit.transform);          
                     go = GameObject.Instantiate(pLocaImage.asset as GameObject, spoit.transform);          
                     go.SetActive(true);
                     go.SetActive(true);
@@ -269,7 +276,7 @@ public class ModelList: System.ICloneable
                  
                  
                 }
                 }
                 mat.prefabModel = go;
                 mat.prefabModel = go;
-
+                callback.Invoke();
                // mat.initFrist();
                // mat.initFrist();
             }           
             }           
         }
         }
@@ -281,7 +288,7 @@ public class ModelList: System.ICloneable
     /// <param name="material"></param>
     /// <param name="material"></param>
     /// <param name="spoit"></param>
     /// <param name="spoit"></param>
     /// <returns></returns>
     /// <returns></returns>
-    private IEnumerator CreateModel_Text(ModelList material, GameObject spoit)
+    private IEnumerator CreateModel_Text(ModelList material, GameObject spoit,Action callback)
     {
     {
         List<ObjectValue> objects = new List<ObjectValue>();
         List<ObjectValue> objects = new List<ObjectValue>();
         List<ModelItem> objs = material.materialList;
         List<ModelItem> objs = material.materialList;
@@ -295,7 +302,7 @@ public class ModelList: System.ICloneable
                 case (int)MaterialType.None:
                 case (int)MaterialType.None:
                     break;
                     break;
                 case (int)MaterialType.Model:
                 case (int)MaterialType.Model:
-                    var pModel = ResMgr.Instance.LoadAsync<GameObject>("Template/Prefab/Model");
+                    var pModel = ResMgr.Instance.LoadAsync<GameObject>("Model");
                     yield return pModel;
                     yield return pModel;
                     go = GameObject.Instantiate(pModel.asset as GameObject, spoit.transform);        
                     go = GameObject.Instantiate(pModel.asset as GameObject, spoit.transform);        
                     go.SetActive(true);
                     go.SetActive(true);
@@ -304,7 +311,7 @@ public class ModelList: System.ICloneable
                     //modelitem.SetData(mat, material.updateTime);
                     //modelitem.SetData(mat, material.updateTime);
                     break;
                     break;
                 case (int)MaterialType.Text:
                 case (int)MaterialType.Text:
-                    var pText = ResMgr.Instance.LoadAsync<GameObject>("Template/Prefab/Text");
+                    var pText = ResMgr.Instance.LoadAsync<GameObject>("Text");
                     yield return pText;
                     yield return pText;
                     go = GameObject.Instantiate(pText.asset as GameObject, spoit.transform);                  
                     go = GameObject.Instantiate(pText.asset as GameObject, spoit.transform);                  
                     go.SetActive(true);
                     go.SetActive(true);
@@ -360,7 +367,7 @@ public class ModelList: System.ICloneable
                 ObjectValue objectValue = CreateMatObjectValue(i, material.id, go, mat);
                 ObjectValue objectValue = CreateMatObjectValue(i, material.id, go, mat);
                 objects.Add(objectValue);
                 objects.Add(objectValue);
                 mat.prefabModel = go;
                 mat.prefabModel = go;
-
+                callback.Invoke();
              //   mat.initFrist();
              //   mat.initFrist();
             }
             }
            
            
@@ -373,9 +380,9 @@ public class ModelList: System.ICloneable
     /// <summary>
     /// <summary>
     /// 创建 5图片+文字/视频+文字
     /// 创建 5图片+文字/视频+文字
     /// </summary>
     /// </summary>
-    private IEnumerator CreateImage_Video_Text(ModelList material, GameObject spoit)
+    private IEnumerator CreateImage_Video_Text(ModelList material, GameObject spoit, Action callback)
     {
     {
-        yield return GameManager.Instance.StartCoroutine(SRTitleLayout.CalLayout(material, spoit));
+        yield return GameManager.Instance.StartCoroutine(SRTitleLayout.CalLayout(material, spoit,  callback));
         /*
         /*
         List<ObjectValue> objects = new List<ObjectValue>();
         List<ObjectValue> objects = new List<ObjectValue>();
         //switch (material.typesetting)
         //switch (material.typesetting)
@@ -469,27 +476,50 @@ public class ModelList: System.ICloneable
         return clonedObject;
         return clonedObject;
     }
     }
 
 
-    public void initModelObj()
+    public void Clear()
     {
     {
-        if (getInfoPos() != Vector3.zero)
+        iscreate = false;
-        {
+        if (materialList != null)
-            _model.transform.localPosition = getInfoPos();
-        }
-        if (getInfoEul() != Vector3.zero)
-        {
-            _model.transform.localEulerAngles = getInfoEul();
-        }
-        if (getInfoScale() != Vector3.zero)
-        {
-            _model.transform.localScale = getInfoScale();
-        }
-        if(materialList!=null)
         {
         {
             for (int i = 0; i < materialList.Count; i++)
             for (int i = 0; i < materialList.Count; i++)
             {
             {
-                materialList[i].initModelObj();
+                materialList[i].Clear();
+                Debug.Log("Clear SpotsList materialList[i]" + i);
             }
             }
         }
         }
+        //GameManager.Instance.destroyGo(_model);
+        //_model = null;
+        Debug.Log("Clear SpotsList materialList[i] Clear");
+    }
+
+    public void initModelObj()
+    {
+        InitObjectTransform(()=> {
+
+
+            if (getInfoPos() != Vector3.zero)
+            {
+                _model.transform.localPosition = getInfoPos();
+            }
+            if (getInfoEul() != Vector3.zero)
+            {
+                _model.transform.localEulerAngles = getInfoEul();
+            }
+            if (getInfoScale() != Vector3.zero)
+            {
+                _model.transform.localScale = getInfoScale();
+            }
+            if (materialList != null)
+            {
+                for (int i = 0; i < materialList.Count; i++)
+                {
+                    Debug.Log("initModelObj===> " + materialList[i].id);
+                    materialList[i].initModelObj();
+                }
+            }
+
+
+        });
         // _model.transform.localPosition = getInfoPos();
         // _model.transform.localPosition = getInfoPos();
         //  _model.transform.localEulerAngles = getInfoEul();
         //  _model.transform.localEulerAngles = getInfoEul();
     }
     }

+ 2 - 2
Assets/HotUpdate/ModelManager.cs

@@ -10,7 +10,7 @@ public class ModelManager : Singleton<ModelManager>
     public Dictionary<int, ModelList> modellist = new Dictionary<int, ModelList>();
     public Dictionary<int, ModelList> modellist = new Dictionary<int, ModelList>();
     
     
     public GameObject materialLibrary;
     public GameObject materialLibrary;
-    private List<ModelList> Models;
+    public List<ModelList> Models;
     public void init(string message)
     public void init(string message)
     {
     {
         GameManager.Instance.text.text = " 获取素材列表";
         GameManager.Instance.text.text = " 获取素材列表";
@@ -39,7 +39,7 @@ public class ModelManager : Singleton<ModelManager>
 
 
     private void AddDicModelList(string message)
     private void AddDicModelList(string message)
     {
     {
-       // Debug.Log(message);
+       Debug.Log("AddDicModelList===>"+message);
      if (!string.IsNullOrWhiteSpace(message))
      if (!string.IsNullOrWhiteSpace(message))
         {
         {
             Models = JsonConvert.DeserializeObject<List<ModelList>>(message);
             Models = JsonConvert.DeserializeObject<List<ModelList>>(message);

+ 1 - 1
Assets/HotUpdate/MoveChange.cs

@@ -88,7 +88,7 @@ public class MoveChange : MonoBehaviour
         isDown = true;
         isDown = true;
     }
     }
 
 
-    bool isCx;
+   public static bool isCx;
     void Update()
     void Update()
     {
     {
         if (ARSpace.isFind)
         if (ARSpace.isFind)

+ 3 - 2
Assets/HotUpdate/PointFileGetUrlCommand.cs

@@ -94,10 +94,11 @@ public class PointFileGetUrlCommand : ICommand
           //  this.SendEvent(new LoadMapFileEvent() { fileName = PointName ,bytes = (byte[])msg.Value});
           //  this.SendEvent(new LoadMapFileEvent() { fileName = PointName ,bytes = (byte[])msg.Value});
     }
     }
 
 
-
+    public static int mapct = 1000;
     public IEnumerator loadmapend(byte[] bytes)
     public IEnumerator loadmapend(byte[] bytes)
     {
     {
-        yield return GameManager.Instance.armap.LoadMap(bytes);
+        mapct++;
+        yield return GameManager.Instance.armap.LoadMap(bytes, mapct);
         GameManager.Instance.armap.enabled = true;
         GameManager.Instance.armap.enabled = true;
         this.SendCommand(new StartImmersalLocalizerCommand());
         this.SendCommand(new StartImmersalLocalizerCommand());
     }
     }

+ 7 - 1
Assets/HotUpdate/SChooseItem.cs

@@ -13,7 +13,11 @@ public class SChooseItem : MonoBehaviour,IPointerClickHandler
     public SceneValue SceneData
     public SceneValue SceneData
     {
     {
         get { return m_SceneData; }
         get { return m_SceneData; }
-        set { m_SceneData = value; }
+        set {
+
+            Debug.Log("valuevaluevalue==>");
+            Debug.Log("valuevaluevalue==>"+value.name);
+            m_SceneData = value; }
     }
     }
 
 
     public GameObject sceneChoose_go;
     public GameObject sceneChoose_go;
@@ -21,6 +25,8 @@ public class SChooseItem : MonoBehaviour,IPointerClickHandler
 
 
     public void OnPointerClick(PointerEventData eventData)
     public void OnPointerClick(PointerEventData eventData)
     {
     {
+        Debug.Log("valuevaluevalue==>");
+        Debug.Log("valuevaluevalue==>" + m_SceneData.name);
         mSceneChoose = sceneChoose_go.GetComponent<SceneChoose>();
         mSceneChoose = sceneChoose_go.GetComponent<SceneChoose>();
         OnSelectScene?.Invoke(m_SceneData, true);
         OnSelectScene?.Invoke(m_SceneData, true);
         mSceneChoose.OnClickOKBtn(m_SceneData);
         mSceneChoose.OnClickOKBtn(m_SceneData);

+ 6 - 2
Assets/HotUpdate/SRTitleLayout.cs

@@ -1,4 +1,5 @@
 using SC.XR.Unity;
 using SC.XR.Unity;
+using System;
 using System.Collections;
 using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine;
@@ -17,6 +18,7 @@ public class SRTitleLayout : MonoBehaviour
     /// <returns></returns>
     /// <returns></returns>
     public static List<ObjectValue> CalLayout(SpoitValue spoitjd, MaterialObl materialObls, GameObject par, out MaterialObl newmaterial,string type ="1")
     public static List<ObjectValue> CalLayout(SpoitValue spoitjd, MaterialObl materialObls, GameObject par, out MaterialObl newmaterial,string type ="1")
     {
     {
+        Debug.Log("CalLayoutCalLayoutCalLayoutCalLayout");
         var yangshi = ResMgr.Instance.Load<GameObject>("yangshi" + materialObls.typesetting);
         var yangshi = ResMgr.Instance.Load<GameObject>("yangshi" + materialObls.typesetting);
         GameObject ys = Instantiate((yangshi as GameObject), par.transform);
         GameObject ys = Instantiate((yangshi as GameObject), par.transform);
         YangShiManager ysm = ys.GetComponent<YangShiManager>();
         YangShiManager ysm = ys.GetComponent<YangShiManager>();
@@ -152,9 +154,10 @@ public class SRTitleLayout : MonoBehaviour
     /// <param name="materialObls">素材</param>
     /// <param name="materialObls">素材</param>
     /// <param name="par">素材父物体,景点</param>
     /// <param name="par">素材父物体,景点</param>
     /// <returns></returns>
     /// <returns></returns>
-    public static IEnumerator CalLayout(ModelList materialObls, GameObject par)
+    public static IEnumerator CalLayout(ModelList materialObls, GameObject par,Action callback)
     {
     {
-        var yangshi = ResMgr.Instance.LoadAsync<GameObject>("Template/Prefab/yangshi" + materialObls.typesetting);
+        Debug.Log("CalLayoutCalLayoutCalLayoutCalLayoutCalLayoutCalLayoutCalLayout");
+        var yangshi = ResMgr.Instance.LoadAsync<GameObject>("yangshi" + materialObls.typesetting);
         yield return yangshi;
         yield return yangshi;
         GameObject ys = Instantiate((yangshi.asset as GameObject), par.transform);
         GameObject ys = Instantiate((yangshi.asset as GameObject), par.transform);
         YangShiManager ysm = ys.GetComponent<YangShiManager>();
         YangShiManager ysm = ys.GetComponent<YangShiManager>();
@@ -250,6 +253,7 @@ public class SRTitleLayout : MonoBehaviour
         {
         {
             text.gameObject.SetActive(true);
             text.gameObject.SetActive(true);
         }
         }
+        callback.Invoke();
         #endregion
         #endregion
     }
     }
 
 

+ 26 - 11
Assets/HotUpdate/SpotsItem.cs

@@ -53,7 +53,23 @@ public class SpotsItem
     }
     }
     public ObserverBehaviour obVuforia;
     public ObserverBehaviour obVuforia;
 
 
-   public bool isInitModel;
+    public bool isInitModel;
+
+    public void Clear()
+    {
+        Debug.Log("Clear SpotsList modelList");
+        foreach (var i in modelList.Values)
+        {
+            i.Clear();
+        }
+       // Debug.Log("Clear SpotsList obVuforia");
+       // GameManager.Instance.destroyGo(this.obVuforia.gameObject);
+        //GameManager.Instance.destroyGo(_spotsObj);
+       // _spotsObj = null;
+        //Debug.Log("Clear SpotsList obVuforia VuforiaItem");
+        //GameManager.Instance.destroyGo(VuforiaItem);
+    }
+
 
 
     public void setObVuforia(ObserverBehaviour obVuforia)
     public void setObVuforia(ObserverBehaviour obVuforia)
     {
     {
@@ -73,15 +89,7 @@ public class SpotsItem
         obj.transform.parent = imageaction.transform;
         obj.transform.parent = imageaction.transform;
         obj.transform.localEulerAngles = new Vector3(90, 0, 0);
         obj.transform.localEulerAngles = new Vector3(90, 0, 0);
         obj.transform.localPosition = Vector3.zero;
         obj.transform.localPosition = Vector3.zero;
-        foreach (var mlkeys in modelList.Keys)
+
-        {
-            ModelList ml = modelList[mlkeys];
-            for (int i = 0; i < ml.materialList.Count; i++)
-            {
-                Debug.Log("DGJ2   ====> ml.materialList[i]." + ml.materialList[i].name);
-                Debug.Log("DGJ2   ====> ml.materialList[i]." + obVuforia.TargetName);
-            }
-        }
     }
     }
     GameObject obj;
     GameObject obj;
 
 
@@ -119,6 +127,13 @@ public class SpotsItem
                     VuforiaItem.transform.eulerAngles = new Vector3(0, VuforiaItem.transform.eulerAngles.y, 0);
                     VuforiaItem.transform.eulerAngles = new Vector3(0, VuforiaItem.transform.eulerAngles.y, 0);
                     Debug.Log("OnTargetStatusChanged 发现 " + obj.transform.position + "status ==>" + obj.transform.eulerAngles);
                     Debug.Log("OnTargetStatusChanged 发现 " + obj.transform.position + "status ==>" + obj.transform.eulerAngles);
                 }, 0.1f,10);
                 }, 0.1f,10);
+                foreach (var i in modelList.Values)
+                {
+                    Debug.Log("initModelObj===> " + i.id);
+                    i._model = SpotsObj;
+                    i.initModelObj();
+                }
+                /*
                 if (!isInitModel)
                 if (!isInitModel)
                 {
                 {
                     Dictionary<string, ModelList> NewmodelList = new Dictionary<string, ModelList>();
                     Dictionary<string, ModelList> NewmodelList = new Dictionary<string, ModelList>();
@@ -232,7 +247,7 @@ public class SpotsItem
                     }
                     }
                     modelList = NewmodelList;
                     modelList = NewmodelList;
                     isInitModel = true;
                     isInitModel = true;
-                }
+                }*/
             }
             }
 
 
             UserSceneUI.Instance.obj.GetComponent<UserChooseScene>().st.SetActive(false);
             UserSceneUI.Instance.obj.GetComponent<UserChooseScene>().st.SetActive(false);

+ 13 - 1
Assets/HotUpdate/UserSceneItem.cs

@@ -26,7 +26,7 @@ public class UserSceneItem
             if (_sceneModel == null)
             if (_sceneModel == null)
             {
             {
                 _sceneModel = new GameObject(name);
                 _sceneModel = new GameObject(name);
-                _sceneModel.transform.parent = GameScene.Instance.transform;
+                _sceneModel.transform.parent = null;//GameScene.Instance.transform;
                 _sceneModel.transform.localPosition = Vector3.zero;
                 _sceneModel.transform.localPosition = Vector3.zero;
                 _sceneModel.transform.localEulerAngles = Vector3.zero;
                 _sceneModel.transform.localEulerAngles = Vector3.zero;
             }
             }
@@ -47,6 +47,18 @@ public class UserSceneItem
      
      
     }
     }
 
 
+    public void Clear()
+    {
+        Debug.Log("Clear SpotsList");
+        foreach (var v in SpotsList.Values)
+        {
+            v.Clear();
+            // v.show();
+        }
+      //  SpotsList.Clear();
+        vufroiaTrigger.Clear();
+    }
+
     //场景原始信息
     //场景原始信息
     public string info;
     public string info;
 
 

+ 1 - 0
Assets/HotUpdate/UserSceneManager.cs

@@ -217,6 +217,7 @@ public class UserSceneManager : XRTool.Util.Singleton<UserSceneManager>
         JsonData msg = UserSceneManager.smsg;
         JsonData msg = UserSceneManager.smsg;
 
 
         smsg = msglist[id];
         smsg = msglist[id];
+        GameScene.Instance.o20.SetActive(true);
     }
     }
 
 
         public Dictionary<string, UserSceneItem> GetScenes()
         public Dictionary<string, UserSceneItem> GetScenes()

+ 1 - 1
Assets/HotUpdate/UserSceneUI.cs

@@ -22,7 +22,7 @@ public class UserSceneUI : UserBaseUI<UserSceneUI>
         //加载预制体
         //加载预制体
         Debug.Log("UI   LoadResources===>");
         Debug.Log("UI   LoadResources===>");
         // GameScene.Instance.gotoScenes("147");
         // GameScene.Instance.gotoScenes("147");
-        obj = GameObject.Instantiate(Resources.Load<GameObject>("UI/SceneChoose2"));
+        obj = GameObject.Instantiate(Resources.Load<GameObject>("SceneChoose2"));
         obj.transform.parent = GameScene.Instance.Canvas.transform;
         obj.transform.parent = GameScene.Instance.Canvas.transform;
         obj.transform.localPosition = Vector3.zero;
         obj.transform.localPosition = Vector3.zero;
         obj.transform.localEulerAngles = Vector3.zero;
         obj.transform.localEulerAngles = Vector3.zero;

+ 15 - 3
Assets/HotUpdate/VufroiaTrigger.cs

@@ -42,16 +42,28 @@ public class VufroiaTrigger
         });
         });
     }
     }
 
 
+    public void Clear()
+    {
+        isData = false;
+        isXML = false;
+        if (observer != null)
+        {
 
 
+            foreach (ObserverBehaviour item in observer)
+            {
+                GameManager.Instance.destroyGo(item.gameObject);
+            }
+        }
+    }
+
+    IEnumerable<ObserverBehaviour> observer = null;
     IEnumerator loadVuforia()
     IEnumerator loadVuforia()
     {
     {
         Debug.Log("DGJ ===> 加载Database  " + LoaclxmlFile);
         Debug.Log("DGJ ===> 加载Database  " + LoaclxmlFile);
-        IEnumerable<ObserverBehaviour> observer = null;
         observer = VuforiaBehaviour.Instance.ObserverFactory.CreateBehavioursFromDatabase(LoaclxmlFile);
         observer = VuforiaBehaviour.Instance.ObserverFactory.CreateBehavioursFromDatabase(LoaclxmlFile);
         try
         try
         {
         {
-        
+
-         
 
 
         }
         }
         catch (System.Exception e)
         catch (System.Exception e)

+ 4 - 0
Assets/HybridCLRGenerate/link.xml

@@ -404,7 +404,11 @@
     <type fullname="Immersal.AR.ARMap" preserve="all" />
     <type fullname="Immersal.AR.ARMap" preserve="all" />
     <type fullname="Immersal.AR.ARSpace" preserve="all" />
     <type fullname="Immersal.AR.ARSpace" preserve="all" />
     <type fullname="Immersal.AR.LocalizerBase" preserve="all" />
     <type fullname="Immersal.AR.LocalizerBase" preserve="all" />
+    <type fullname="Immersal.AR.MapLocalizedEvent" preserve="all" />
+    <type fullname="Immersal.AR.MapOffset" preserve="all" />
+    <type fullname="Immersal.AR.SpaceContainer" preserve="all" />
     <type fullname="Immersal.AR.XRLocalizer" preserve="all" />
     <type fullname="Immersal.AR.XRLocalizer" preserve="all" />
+    <type fullname="SetLocalTime" preserve="all" />
   </assembly>
   </assembly>
   <assembly fullname="mscorlib">
   <assembly fullname="mscorlib">
     <type fullname="System.Action" preserve="all" />
     <type fullname="System.Action" preserve="all" />

+ 0 - 174
Assets/MRNavigatorPro.unity

@@ -265,16 +265,6 @@ PrefabInstance:
       propertyPath: m_AnchoredPosition.y
       propertyPath: m_AnchoredPosition.y
       value: -101.5
       value: -101.5
       objectReference: {fileID: 0}
       objectReference: {fileID: 0}
-    - target: {fileID: 4002528869247440488, guid: 9aa3328b080774e6a968fc5910820dbf,
-        type: 3}
-      propertyPath: m_Mesh
-      value: 
-      objectReference: {fileID: 1841186154}
-    - target: {fileID: 4002528869247440495, guid: 9aa3328b080774e6a968fc5910820dbf,
-        type: 3}
-      propertyPath: m_Materials.Array.data[0]
-      value: 
-      objectReference: {fileID: 0}
     - target: {fileID: 4002528869314084846, guid: 9aa3328b080774e6a968fc5910820dbf,
     - target: {fileID: 4002528869314084846, guid: 9aa3328b080774e6a968fc5910820dbf,
         type: 3}
         type: 3}
       propertyPath: m_SizeDelta.y
       propertyPath: m_SizeDelta.y
@@ -450,170 +440,6 @@ LightingSettings:
   m_PVRFilteringAtrousPositionSigmaIndirect: 2
   m_PVRFilteringAtrousPositionSigmaIndirect: 2
   m_PVRFilteringAtrousPositionSigmaAO: 1
   m_PVRFilteringAtrousPositionSigmaAO: 1
   m_PVRTiledBaking: 0
   m_PVRTiledBaking: 0
---- !u!43 &1841186154
-Mesh:
-  m_ObjectHideFlags: 0
-  m_CorrespondingSourceObject: {fileID: 0}
-  m_PrefabInstance: {fileID: 0}
-  m_PrefabAsset: {fileID: 0}
-  m_Name: 
-  serializedVersion: 10
-  m_SubMeshes:
-  - serializedVersion: 2
-    firstByte: 0
-    indexCount: 0
-    topology: 5
-    baseVertex: 0
-    firstVertex: 0
-    vertexCount: 0
-    localAABB:
-      m_Center: {x: 0, y: 0, z: 0}
-      m_Extent: {x: 0, y: 0, z: 0}
-  m_Shapes:
-    vertices: []
-    shapes: []
-    channels: []
-    fullWeights: []
-  m_BindPose: []
-  m_BoneNameHashes: 
-  m_RootBoneNameHash: 0
-  m_BonesAABB: []
-  m_VariableBoneCountWeights:
-    m_Data: 
-  m_MeshCompression: 0
-  m_IsReadable: 1
-  m_KeepVertices: 0
-  m_KeepIndices: 0
-  m_IndexFormat: 1
-  m_IndexBuffer: 
-  m_VertexData:
-    serializedVersion: 3
-    m_VertexCount: 0
-    m_Channels:
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 3
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    - stream: 0
-      offset: 0
-      format: 0
-      dimension: 0
-    m_DataSize: 0
-    _typelessdata: 
-  m_CompressedMesh:
-    m_Vertices:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_UV:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_Normals:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_Tangents:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_Weights:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_NormalSigns:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_TangentSigns:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_FloatColors:
-      m_NumItems: 0
-      m_Range: 0
-      m_Start: 0
-      m_Data: 
-      m_BitSize: 0
-    m_BoneIndices:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_Triangles:
-      m_NumItems: 0
-      m_Data: 
-      m_BitSize: 0
-    m_UVInfo: 0
-  m_LocalAABB:
-    m_Center: {x: 0, y: 0, z: 0}
-    m_Extent: {x: 1.7014117e+38, y: 1.7014117e+38, z: 1.7014117e+38}
-  m_MeshUsageFlags: 0
-  m_BakedConvexCollisionMesh: 
-  m_BakedTriangleCollisionMesh: 
-  m_MeshMetrics[0]: 1
-  m_MeshMetrics[1]: 1
-  m_MeshOptimizationFlags: 1
-  m_StreamData:
-    serializedVersion: 2
-    offset: 0
-    size: 0
-    path: 
 --- !u!1001 &1997991780
 --- !u!1001 &1997991780
 PrefabInstance:
 PrefabInstance:
   m_ObjectHideFlags: 0
   m_ObjectHideFlags: 0

File diff suppressed because it is too large
+ 377 - 477
Assets/MRNavigatorStart/MRNavigatorStart.prefab


File diff suppressed because it is too large
+ 454 - 468
Assets/Resources/SceneChoose2.prefab


+ 15 - 18
Assets/Resources/Warning/WarningPopUp.prefab

@@ -171,7 +171,7 @@ GameObject:
   m_Component:
   m_Component:
   - component: {fileID: 2160148988694440984}
   - component: {fileID: 2160148988694440984}
   - component: {fileID: 2160148988694440986}
   - component: {fileID: 2160148988694440986}
-  - component: {fileID: 2160148988694440985}
+  - component: {fileID: 5494568963327359586}
   m_Layer: 5
   m_Layer: 5
   m_Name: BG
   m_Name: BG
   m_TagString: Untagged
   m_TagString: Untagged
@@ -207,7 +207,7 @@ CanvasRenderer:
   m_PrefabAsset: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 2160148988694440991}
   m_GameObject: {fileID: 2160148988694440991}
   m_CullTransparentMesh: 0
   m_CullTransparentMesh: 0
---- !u!114 &2160148988694440985
+--- !u!114 &5494568963327359586
 MonoBehaviour:
 MonoBehaviour:
   m_ObjectHideFlags: 0
   m_ObjectHideFlags: 0
   m_CorrespondingSourceObject: {fileID: 0}
   m_CorrespondingSourceObject: {fileID: 0}
@@ -216,27 +216,25 @@ MonoBehaviour:
   m_GameObject: {fileID: 2160148988694440991}
   m_GameObject: {fileID: 2160148988694440991}
   m_Enabled: 1
   m_Enabled: 1
   m_EditorHideFlags: 0
   m_EditorHideFlags: 0
-  m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
+  m_Script: {fileID: 11500000, guid: 05841a9ad3fccc44da9d0e4653f05e2a, type: 3}
   m_Name: 
   m_Name: 
   m_EditorClassIdentifier: 
   m_EditorClassIdentifier: 
   m_Material: {fileID: 0}
   m_Material: {fileID: 0}
-  m_Color: {r: 0.14150941, g: 0.14150941, b: 0.14150941, a: 1}
+  m_Color: {r: 0.5471698, g: 0.5471698, b: 0.5471698, a: 0.39215687}
   m_RaycastTarget: 1
   m_RaycastTarget: 1
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
   m_Maskable: 1
   m_Maskable: 1
   m_OnCullStateChanged:
   m_OnCullStateChanged:
     m_PersistentCalls:
     m_PersistentCalls:
       m_Calls: []
       m_Calls: []
-  m_Sprite: {fileID: 21300000, guid: c7520f785578faf41a482b5153f2fd88, type: 3}
+  m_Texture: {fileID: 0}
-  m_Type: 1
+  m_UVRect:
-  m_PreserveAspect: 0
+    serializedVersion: 2
-  m_FillCenter: 1
+    x: 0
-  m_FillMethod: 4
+    y: 0
-  m_FillAmount: 1
+    width: 1
-  m_FillClockwise: 1
+    height: 1
-  m_FillOrigin: 0
+  Radius: 10
-  m_UseSpriteMesh: 0
-  m_PixelsPerUnitMultiplier: 1
 --- !u!1 &6683293567407465727
 --- !u!1 &6683293567407465727
 GameObject:
 GameObject:
   m_ObjectHideFlags: 0
   m_ObjectHideFlags: 0
@@ -380,11 +378,10 @@ MonoBehaviour:
   m_OnCullStateChanged:
   m_OnCullStateChanged:
     m_PersistentCalls:
     m_PersistentCalls:
       m_Calls: []
       m_Calls: []
-  m_text: "\u8BF7\u5148\u9009\u62E9\u573A\u666F"
+  m_text: Save Fail
   m_isRightToLeft: 0
   m_isRightToLeft: 0
-  m_fontAsset: {fileID: 11400000, guid: fb2cd06170cbccb45aeb2aa643b0e4d4, type: 2}
+  m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
-  m_sharedMaterial: {fileID: 8874737445518861689, guid: fb2cd06170cbccb45aeb2aa643b0e4d4,
+  m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
-    type: 2}
   m_fontSharedMaterials: []
   m_fontSharedMaterials: []
   m_fontMaterial: {fileID: 0}
   m_fontMaterial: {fileID: 0}
   m_fontMaterials: []
   m_fontMaterials: []

File diff suppressed because it is too large
+ 102 - 11
Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Anton SDF.asset


File diff suppressed because it is too large
+ 94 - 11
Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Bangers SDF.asset


File diff suppressed because it is too large
+ 75 - 11
Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Electronic Highway Sign SDF.asset


File diff suppressed because it is too large
+ 105 - 14
Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Oswald Bold SDF.asset


File diff suppressed because it is too large
+ 102 - 11
Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Roboto-Bold SDF.asset


File diff suppressed because it is too large
+ 131 - 13
Assets/TextMesh Pro/Resources/Fonts & Materials/LiberationSans SDF - Fallback.asset


Some files were not shown because too many files changed in this diff