public IEnumerator SceneTest() { const string basePath = "Assets/UniEnum.Tests/Editor/Scenes"; var sceneFiles = Directory.EnumerateFiles(basePath, "*.unity", SearchOption.AllDirectories) .Select(v => new EditorBuildSettingsScene(v, true)) .ToArray(); var setting = new GenerateSetting() { Namespace = "UniEnumEditorTests", OutputDir = "Assets/UniEnum.Tests/Editor/TestOutput", }; AssetDatabase.DeleteAsset($"{setting.OutputDir}/SceneValues.Generated.cs"); UnityConstantValuesGenerator.UpdateSceneValues(setting, sceneFiles); yield return(new RecompileScripts()); Assert.AreEqual("UniEnumTest_100", SceneName.UniEnumTest_100); Assert.AreEqual("UniEnumTest_101", SceneName.UniEnumTest_101); Assert.AreEqual("UniEnumTest_102", SceneName.UniEnumTest_102); Assert.AreEqual(0, SceneId.UniEnumTest_100); Assert.AreEqual(1, SceneId.UniEnumTest_101); Assert.AreEqual(2, SceneId.UniEnumTest_102); Assert.AreEqual($"{basePath}/UniEnumTest_100.unity", ScenePath.UniEnumTest_100); Assert.AreEqual($"{basePath}/UniEnumTest_101.unity", ScenePath.UniEnumTest_101); Assert.AreEqual($"{basePath}/UniEnumTest_102.unity", ScenePath.UniEnumTest_102); }
public IEnumerator UnityConstantsTest() { var setting = new GenerateSetting() { Namespace = "UniEnumEditorTests", OutputDir = "Assets/UniEnum.Tests/Editor/TestOutput", }; AssetDatabase.DeleteAsset($"{setting.OutputDir}/TagValues.Generated.cs"); AssetDatabase.DeleteAsset($"{setting.OutputDir}/LayerValues.Generated.cs"); AssetDatabase.DeleteAsset($"{setting.OutputDir}/SortingLayerValues.Generated.cs"); UnityConstantValuesGenerator.UpdateUnityConstants(setting); yield return(new RecompileScripts()); Assert.AreEqual("12@hoge -##A", TagName._12hogeA); Assert.AreEqual(17, (int)LayerId.アイウエオ); Assert.AreEqual((1 << 17), (int)LayerMaskValue.アイウエオ); Assert.AreEqual(21, (int)LayerId._123abcWXZ11); Assert.AreEqual((1 << 21), (int)LayerMaskValue._123abcWXZ11); Assert.AreEqual(SortingLayer.NameToID("Default"), SortingLayerId.Default); }
public IEnumerator SceneTest() { var sceneFiles = Directory.EnumerateFiles(SceneDirPath, "*.unity", SearchOption.AllDirectories) .Select(v => new EditorBuildSettingsScene(v, true)) .ToArray(); var setting = new GenerateSetting() { @namespace = "UniEnumEditorTests", outputDir = OutputDirPath, }; AssetDatabase.DeleteAsset($"{setting.outputDir}/SceneValues.Generated.cs"); UnityConstantValuesGenerator.UpdateSceneValues(setting, sceneFiles); yield return(new RecompileScripts()); #if CHECK_GENERATE_CLASS Assert.AreEqual("UniEnumTest_100", SceneName.UniEnumTest_100); Assert.AreEqual("UniEnumTest_101", SceneName.UniEnumTest_101); Assert.AreEqual("UniEnumTest_102", SceneName.UniEnumTest_102); Assert.AreEqual(0, SceneId.UniEnumTest_100); Assert.AreEqual(1, SceneId.UniEnumTest_101); Assert.AreEqual(2, SceneId.UniEnumTest_102); Assert.AreEqual($"{SceneDirPath}/UniEnumTest_100.unity", ScenePath.UniEnumTest_100); Assert.AreEqual($"{SceneDirPath}/UniEnumTest_101.unity", ScenePath.UniEnumTest_101); Assert.AreEqual($"{SceneDirPath}/UniEnumTest_102.unity", ScenePath.UniEnumTest_102); #endif }
public override void OnActivate(string searchContext, VisualElement rootElement) { base.OnActivate(searchContext, rootElement); var settings = UnityConstantsGeneratorSettings.Instance; _generateSetting = settings.generateSetting; }
private static void GenerateWithGroupRule(AddressableAssetSettings settings, GenerateSetting generateSetting, GroupRule groupRule) { AddressableAssetGroup oldGroup = settings.FindGroup(groupRule.GroupName); AddressableAssetGroup group; if (generateSetting.RecreateGroup) { if (oldGroup) { settings.RemoveGroup(oldGroup); oldGroup = null; } group = settings.CreateGroup(groupRule.GroupName, false, false, true, groupRule.SchemasToCopy); } else { if (oldGroup) { group = oldGroup; } else { group = settings.CreateGroup(groupRule.GroupName, false, false, true, groupRule.SchemasToCopy); } } if (generateSetting.ApplyAssetRule) { for (int iAssetRule = 0; iAssetRule < groupRule.AssetRules.Length; iAssetRule++) { AssetRule iterAssetRule = groupRule.AssetRules[iAssetRule]; GenerateWithAssetRule(settings, generateSetting, group, groupRule, iterAssetRule); } } if (generateSetting.RemoveInvalidAsset) { RemoveInvalidAsset(group); } }
private static void GenerateWithAssetRule(AddressableAssetSettings settings, GenerateSetting generateSetting, AddressableAssetGroup group, GroupRule groupRule, AssetRule assetRule) { int assetsIndexOf = Application.dataPath.LastIndexOf("Assets"); string realPath = Application.dataPath.Substring(0, assetsIndexOf) + assetRule.Path; if (!Directory.Exists(realPath)) { Debug.LogError(string.Format("Path ({0}) of group ({1}) not exists", realPath, groupRule.GroupName)); return; } DirectoryInfo directoryInfo = new DirectoryInfo(realPath); FileInfo[] files = directoryInfo.GetFiles("*.*", assetRule.IncludeChilder ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly); for (int iFile = 0; iFile < files.Length; iFile++) { FileInfo iterFile = files[iFile]; string iterFileName = iterFile.Name.Substring(0, iterFile.Name.Length - iterFile.Extension.Length); // meta文件肯定是要忽略的 if (iterFile.Extension == ".meta") { continue; } if (!Filter(assetRule.ExtensionFilterType, iterFile.Extension, assetRule.ExtensionFilters) || !Filter(assetRule.FileNameFilterType, iterFileName, assetRule.FileNameFilters)) { continue; } string iterAssetPath = iterFile.FullName.Substring(assetsIndexOf); string assetKey; switch (assetRule.AssetKeyType) { case AssetKeyType.FileName: assetKey = iterFileName; break; case AssetKeyType.FileNameFormat: assetKey = string.Format(assetRule.AssetKeyFormat, iterFileName); break; case AssetKeyType.Path: // Unity默认的路径分隔符是'/' assetKey = iterAssetPath.Replace('\\', '/'); break; default: assetKey = string.Empty; throw new System.Exception(string.Format("not support ExtensionFilterType ({0})", assetRule.ExtensionFilterType)); } string iterAssetGuid = AssetDatabase.AssetPathToGUID(iterAssetPath); AddressableAssetEntry iterAssetEntry = AddressableAssetSettingsDefaultObject.Settings.CreateOrMoveEntry(iterAssetGuid, group); if (iterAssetEntry == null) { Debug.LogError(string.Format("Cant load asset at path ({0})", iterAssetPath)); } iterAssetEntry.SetAddress(assetKey); for (int iLabel = 0; iLabel < assetRule.AssetLables.Length; iLabel++) { iterAssetEntry.SetLabel(assetRule.AssetLables[iLabel], true); } } }