Ejemplo n.º 1
0
        /// <summary>
        /// 加载MapScene
        /// </summary>
        public void LoadMapScene()
        {
            UnLoadMapScene();
            string           sceneName        = Constants.EXPORT_MAP_FOLDER_NAME_STARTWITHS + GetMapUid();
            MapEditorSetting mapEditorSetting = MapEditorUtility.GetOrCreateMapEditorSetting();
            string           scenePath        = string.Format("{0}/{1}/{2}{3}.unity"
                                                              , mapEditorSetting.AssetExportDirectory
                                                              , sceneName
                                                              , Constants.SCENE_EXPORT_FILENAMESTARTWITHS
                                                              , GetMapUid());

            if (!File.Exists(scenePath))
            {
                EditorUtility.DisplayDialog("提示", "未导出对应的MapScene", "确定");
                return;
            }
            if (Application.isPlaying)
            {
                Scene scene = SceneManager.GetSceneByPath(scenePath);
                if (!scene.isLoaded)
                {
                    m_MapScene = scene;
                    SceneManager.LoadScene(scenePath, LoadSceneMode.Additive);
                }
            }
            else
            {
                m_MapScene = EditorSceneManager.OpenScene(scenePath, OpenSceneMode.Additive);
            }
        }
Ejemplo n.º 2
0
        public static ExportParameter CreateExportParameter()
        {
            ExportParameter exportParameter = new ExportParameter();

            exportParameter.ExportedUnitAddressableKeys = new HashSet <string>();
            MapEditorSetting mapEditorSetting = MapEditorUtility.GetOrCreateMapEditorSetting();

            string exportAssetPath = string.Format("{0}/Units"
                                                   , mapEditorSetting.AssetExportDirectory);

            string[] resAssets = AssetDatabase.FindAssets("t:Prefab", new string[] { exportAssetPath });
            if (resAssets != null && resAssets.Length > 0)
            {
                for (int iRes = 0; iRes < resAssets.Length; iRes++)
                {
                    string   resPath  = AssetDatabase.GUIDToAssetPath(resAssets[iRes]);
                    string[] resSplit = resPath.Split('/');
                    if (resSplit != null && resSplit.Length > 0)
                    {
                        string   lastName      = resSplit[resSplit.Length - 1];
                        string[] lastNameSplit = lastName.Split('_');
                        if (lastNameSplit != null && lastNameSplit.Length == 2)
                        {
                            lastName = lastName.Replace(".prefab", "");
                            exportParameter.ExportedUnitAddressableKeys.Add(lastName);
                        }
                    }
                }
            }
            return(exportParameter);
        }
Ejemplo n.º 3
0
        private IEnumerator Export_Co()
        {
            yield return(null);

            ExportParameter exportParameter = MapEditorUtility.CreateExportParameter();

            exportParameter.ThrowExceptionAtAbort       = true;
            exportParameter.ExportedUnitAddressableKeys = new HashSet <string>();

            string[] sceneGuids = AssetDatabase.FindAssets("t:Scene");
            for (int iScene = 0; iScene < sceneGuids.Length; iScene++)
            {
                Scene        iterScene       = EditorSceneManager.OpenScene(AssetDatabase.GUIDToAssetPath(sceneGuids[iScene]), OpenSceneMode.Single);
                GameObject[] rootGameObjects = iterScene.GetRootGameObjects();
                for (int iRootGameObject = 0; iRootGameObject < rootGameObjects.Length; iRootGameObject++)
                {
                    GameObject iterGameObject = rootGameObjects[iRootGameObject];
                    Map        iterMap        = iterGameObject.GetComponent <Map>();
                    if (iterMap)
                    {
                        //ExporterHandle handle = new Exporter().BeginExport(iterMap, MapEditorUtility.GetOrCreateMapEditorSetting().ExportAllMapSetting, exportParameter);

                        ExporterHandle handle = new Exporter().BeginExport(iterMap, MapEditorUtility.GetOrCreateMapEditorSetting().ExportAllMapSetting, exportParameter, iterMap.GetAreaSpawnerList(), true);
                        while (!handle.IsDone)
                        {
                            yield return(null);
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        private void InstantiateUnit(SceneUnitInfo unitInfo, Transform parent)
        {
            if (m_Owner.UseAsset)
            {
                AssetUtil.InstanceAssetAsync(m_AreaDetailInfo.AssetInfos[unitInfo.AssetIndex].AddressableKey, (pathOrAddress, uObj, userData) =>
                {
                    if (uObj != null)
                    {
                        GameObject resultObj = uObj as GameObject;
                        if (resultObj != null)
                        {
                            m_WaitInstantiateCount--;
                            Transform t = resultObj.transform;
                            t.SetParent(m_UnitsRoot);
                            t.localPosition = unitInfo.LocalPosition;
                            t.localRotation = unitInfo.LocalRotation;
                            t.localScale    = unitInfo.LocalScale;
                        }
                    }
                });
            }
            else
            {
                m_WaitInstantiateCount--;
                string path = string.Format("{0}/{1}Map_{2}/{3}.prefab"
                                            , MapEditorUtility.GetOrCreateMapEditorSetting().AssetExportDirectory
                                            , Constants.UNIT_PREFAB_EXPORT_DIRECTORY
                                            , m_Owner.MapInfo.Uid
                                            , m_AreaDetailInfo.AssetInfos[unitInfo.AssetIndex].AddressableKey);

                GameObject asset = AssetDatabase.LoadAssetAtPath <GameObject>(path);
                if (asset == null)
                {
                    string[] paths = AssetDatabase.FindAssets(m_AreaDetailInfo.AssetInfos[unitInfo.AssetIndex].AddressableKey);
                    if (paths != null && paths.Length > 0)
                    {
                        path  = AssetDatabase.GUIDToAssetPath(paths[0]);
                        asset = AssetDatabase.LoadAssetAtPath <GameObject>(path);
                    }
                }

                if (asset != null)
                {
                    Transform t = Instantiate(asset).transform;
                    t.SetParent(parent);
                    t.localPosition = unitInfo.LocalPosition;
                    t.localRotation = unitInfo.LocalRotation;
                    t.localScale    = unitInfo.LocalScale;
                }
            }
        }
Ejemplo n.º 5
0
        private bool TryLoadAreaDetailInfo()
        {
            if (m_AreaDetailInfo == null)
            {
                string areaDetailInfoPath = string.Format("{0}/{1}{2}/{3}.asset"
                                                          , MapEditorUtility.GetOrCreateMapEditorSetting().AssetExportDirectory
                                                          , Constants.EXPORT_MAP_FOLDER_NAME_STARTWITHS
                                                          , m_Owner.GetMapUid()
                                                          , AreaInfo.DetailInfoAddressableKey);
                m_AreaDetailInfo = AssetDatabase.LoadAssetAtPath <AreaDetailInfo>(areaDetailInfoPath);
                if (areaDetailInfoPath == null)
                {
                    Debug.LogError(string.Format("cant find file ({0})", areaDetailInfoPath));
                }
            }

            return(m_AreaDetailInfo != null);
        }