Ejemplo n.º 1
0
        //从流式资源中回退
        public static void ComeBackInMemory(this HLODGenerate hlodGenerate, HLODGenerateEditor editor)
        {
            //还原HLOD
            hlodGenerate.ComeBackHLODAsset(editor);

            //还远原始资源
            hlodGenerate.ComeBackOriginalAsset();

            //删除流式资源
            if (editor.m_DeleteStreamingAsset)
            {
                hlodGenerate.DeleteExportStreamingAsset();
            }
        }
Ejemplo n.º 2
0
        //还原HLOD
        public static void ComeBackHLODAsset(this HLODGenerate hlodGenerate, HLODGenerateEditor editor)
        {
#if UNITY_EDITOR
            if (hlodGenerate.m_RootLODVolume == null)
            {
                return;
            }
#endif
            Queue <LODVolume> queue = new Queue <LODVolume>();
#if UNITY_EDITOR
            queue.Enqueue(hlodGenerate.m_RootLODVolume.GetComponent <LODVolume>());
#endif
            while (queue.Count > 0)
            {
                LODVolume lodVolume = queue.Dequeue();
                foreach (var child in lodVolume.childVolumes)
                {
                    queue.Enqueue(child);
                }
                if (lodVolume.combined == null)
                {
                    continue;
                }
                GameObject obj = AssetDatabase.LoadAssetAtPath <GameObject>(lodVolume.combined._assetPath);
                if (obj)
                {
#if UNITY_EDITOR
                    obj = PrefabUtility.InstantiatePrefab(obj, hlodGenerate.m_HLODS.transform) as GameObject;
#endif
                    obj.transform.SetPositionAndRotation(lodVolume.combined.Pose.position, lodVolume.combined.Pose.rotation);
                    obj.transform.localScale = lodVolume.combined.Pose.scale;
                    obj.GetComponent <MeshRenderer>().enabled = false;
                    lodVolume.combined._hlodRoot = obj;
                    lodVolume.combined._lodGroup = obj.GetComponent <LODGroup>();

                    if (editor.m_DeleteStreamingAsset)
                    {
                        PrefabUtility.UnpackPrefabInstance(obj, PrefabUnpackMode.OutermostRoot, InteractionMode.AutomatedAction);
                    }
                }
            }
        }