コード例 #1
0
        public void FreeLayer(SceneLayer layer)
        {
            m_unusedLayerList.Remove(layer);
            m_usingLayerList.Remove(layer);

            GameObject.Destroy(layer.gameObject);
            SetDirty();
        }
コード例 #2
0
        private void AddLayerToUnsedRoot(SceneLayer layer)
        {
            layer.m_state = SceneLayerState.Unused;
            m_unusedLayerList.Add(layer);

            layer.gameObject.SetActive(false);
            layer.transform.SetParent(UnusedLayerRoot.transform, false);
        }
コード例 #3
0
        private void AddLayerToLoadingRoot(SceneLayer layer)
        {
            layer.m_state = SceneLayerState.Loading;
            m_loadingLayerList.Add(layer);

            layer.gameObject.SetActive(false);
            layer.transform.SetParent(LoadingLayerRoot.transform, false);
        }
コード例 #4
0
 public void PopLayer(SceneLayer layer)
 {
     if (layer.m_state != SceneLayerState.Using)
     {
         Debug.LogError("SceneManager:PopLayer but layer's state is not Using");
         return;
     }
     m_usingLayerList.Remove(layer);
     m_unusedLayerList.Add(layer);
     layer.m_state = SceneLayerState.Unused;
     layer.transform.SetParent(UnusedLayerRoot.transform, false);
     layer.gameObject.SetActive(false);
     SetDirty();
 }
コード例 #5
0
 private void OnLoadLayerAssetComplete(SceneLayer layer, GameObject asset, Action <SceneLayer> onComplete)
 {
     m_loadingLayerList.Remove(layer);
     if (asset != null)
     {
         var go = GameObject.Instantiate <GameObject>(asset);
         layer.AttachGameObject(go);
         AddLayerToUnsedRoot(layer);
         onComplete(layer);
     }
     else
     {
         FreeLayer(layer);
         onComplete(null);
     }
 }
コード例 #6
0
 private void ResetCameraDepth()
 {
     if (m_usingLayerList.Count < 2)
     {
         return;
     }
     lock (m_usingLayerList)
     {
         List <SceneLayer> thirdDLayers = new List <SceneLayer>();
         List <SceneLayer> uiLayers     = new List <SceneLayer>();
         for (int i = 0; i < m_usingLayerList.Count; i++)
         {
             SceneLayer layer = m_usingLayerList[i];
             if (layer is UISceneLayer)
             {
                 uiLayers.Add(layer);
             }
             else
             {
                 thirdDLayers.Add(layer);
             }
         }
         int depth = 0;
         foreach (var layer in thirdDLayers)
         {
             layer.LayerCamera.depth = depth++;
         }
         List <Camera> uiCameras = new List <Camera>();
         foreach (var layer in uiLayers)
         {
             if (!uiCameras.Contains(layer.LayerCamera))
             {
                 uiCameras.Add(layer.LayerCamera);
             }
         }
         foreach (var uiCamera in uiCameras)
         {
             uiCamera.depth = depth++;
         }
     }
 }
コード例 #7
0
 public void PushLayer(SceneLayer layer)
 {
     if (layer.m_state != SceneLayerState.Unused)
     {
         Debug.LogError("SceneManager:PushLayer but layer's state is not Unused");
         return;
     }
     m_unusedLayerList.Remove(layer);
     m_usingLayerList.Add(layer);
     layer.m_state = SceneLayerState.Using;
     if (layer is UISceneLayer)
     {
         layer.transform.SetParent(UILayerRoot1Canvas.transform, false);
     }
     else if (layer is ThreeDSceneLayer)
     {
         layer.transform.SetParent(ThreeDSceneRoot.transform, false);
     }
     layer.gameObject.SetActive(true);
     SetDirty();
 }