设置模型 将模型从另一个场景加载到当前场景中

1.先加载场景,然后设置场景里的模型到当前场景

2.代码如下:

这是每个场景的名称

  private string[] sceneNames = new string[] { "B1", "一层", "二层","三层","四层","五层","六层","七层" };
  private string[] loucengNames = new string[]{"每个场景中的模型名字"}

 

 

// 开始加载所有场景
    public void LoadScenes()
    {
        StartCoroutine(LoadScenesCoroutine());
    }
    // 异步加载场景的协程方法
    IEnumerator LoadScenesCoroutine()
    {
        foreach (var sceneName in sceneNames)
        {
            SceneManager.LoadScene(sceneName, LoadSceneMode.Additive);
            //asyncLoad.allowSceneActivation = true; // 当场景加载完毕时,允许激活新场景
            Debug.Log("场景加载完毕");
        }
        yield return null;
        int aa = 0;
        foreach (var item in sceneNames)
        {
            SettingTransform(item,loucengNames [aa]);
            aa++;
        }
        for (int i = 0; i < louLists.Count; i++)
        {
            louLists[i].parent = zongParent;
            louPosLists.Add(louLists[i].position);
        }
       
    }
    /// <summary>
    /// 设置模型 将模型从另一个场景加载到当前场景中
    /// </summary>
    /// <param name="name_">scence场景名称</param>
    /// <param name="lou">scence场景中某一个模型的名字</param>
    public void SettingTransform(string name_,string lou)
    {     
        Scene scenezong = SceneManager.GetActiveScene();
        Scene scene = SceneManager.GetSceneByName(name_);
        List<GameObject> rootGameObjects = new List<GameObject>();
        scene.GetRootGameObjects(rootGameObjects);
        Transform obj = rootGameObjects.Find(o => o.name == lou).transform;
        louLists.Add ( obj);
        SceneManager.MoveGameObjectToScene(obj.gameObject, scenezong);
    }

 

报错的可以先忽略

 

posted @ 2025-04-14 15:16  剑起苍穹  阅读(26)  评论(0)    收藏  举报
/*鼠标点击特效*/