概要
using System.Linq; using NUnit.Framework; using UnityEditor.AddressableAssets; using UnityEditor.AddressableAssets.Settings; public sealed class Addressables用テスト { private sealed class DuplicateGroupResult { private readonly string m_groupName; private readonly string m_groupGuid; public DuplicateGroupResult( IGrouping<string, AddressableAssetGroup> duplicate ) { m_groupName = duplicate.First().Name; m_groupGuid = duplicate.Key; } public override string ToString() { return $"{m_groupName},{m_groupGuid}"; } } [Test] public void AddressableAssetSettingsに登録されているグループが重複していないか() { var settings = AddressableAssetSettingsDefaultObject.Settings; if ( settings == null ) return; var groups = settings.groups; var duplicates = groups .Where( x => !x.Name.Contains( "Built In Data" ) ) .GroupBy( x => x.Guid ) .Where( x => 1 < x.Count() ) .Select( x => new DuplicateGroupResult( x ) ) .ToArray() ; if ( duplicates.Length <= 0 ) return; Assert.Fail ( $@"AddressableAssetSettings に重複して登録されているグループが存在します -------------------------------------------------------------------------------- {string.Join( "\n", duplicates.Select( x => x.ToString() ) )} --------------------------------------------------------------------------------" ); } }
- AddressableAssetSettings.asset がコンフリクトして解消した時に誤って m_GroupAssets に同 guid のアセットが複数登録されてしまったりすると、ビルド時にエラーが発生するため、事前に確認するためのテストコード