暂无描述
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

PrebuiltSceneSetup.cs 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using System.Collections.Generic;
  2. using System.IO;
  3. using System.Linq;
  4. #if UNITY_EDITOR
  5. using UnityEditor;
  6. #endif
  7. using UnityEngine.TestTools;
  8. namespace Unity.AI.Navigation.Tests
  9. {
  10. abstract class PrebuiltSceneSetup : IPrebuildSetup, IPostBuildCleanup
  11. {
  12. const string k_RootDir = "Assets";
  13. const string k_TestDir = "TmpScenes";
  14. string testDirectory { get; set; } = "";
  15. protected string pathToTestScene { get; private set; } = "";
  16. protected abstract string GetSceneFile();
  17. protected abstract void SceneSetup();
  18. public void Setup()
  19. {
  20. #if UNITY_EDITOR
  21. testDirectory = Path.Combine(k_RootDir, k_TestDir);
  22. pathToTestScene = Path.Combine(testDirectory, GetSceneFile());
  23. AssetDatabase.Refresh();
  24. if (!AssetDatabase.IsValidFolder(testDirectory))
  25. testDirectory = AssetDatabase.GUIDToAssetPath(AssetDatabase.CreateFolder(k_RootDir, k_TestDir));
  26. AssetDatabase.Refresh();
  27. SceneSetup();
  28. var editorBuildSettingsScenes = new List<EditorBuildSettingsScene>(EditorBuildSettings.scenes)
  29. {
  30. new EditorBuildSettingsScene(pathToTestScene, true)
  31. };
  32. EditorBuildSettings.scenes = editorBuildSettingsScenes.ToArray();
  33. #endif
  34. }
  35. public void Cleanup()
  36. {
  37. #if UNITY_EDITOR
  38. AssetDatabase.Refresh();
  39. testDirectory = Path.Combine(k_RootDir, k_TestDir);
  40. pathToTestScene = Path.Combine(testDirectory, GetSceneFile());
  41. var baseSceneGuidTxt = AssetDatabase.AssetPathToGUID(pathToTestScene);
  42. if (AssetDatabase.IsValidFolder(testDirectory))
  43. AssetDatabase.DeleteAsset(testDirectory);
  44. if (GUID.TryParse(baseSceneGuidTxt, out var sceneGuid))
  45. EditorBuildSettings.scenes = EditorBuildSettings.scenes.Where(scene => scene.guid != sceneGuid).ToArray();
  46. #endif
  47. }
  48. }
  49. }