Storyline+Dialog初步
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
#if ADDRESSABLES_INSTALLED
|
||||
using System.Collections.Generic;
|
||||
using SubAssetsToolbox.Editor;
|
||||
using UnityEditor.AddressableAssets;
|
||||
using UnityEditor.AddressableAssets.Settings;
|
||||
using UnityEngine;
|
||||
|
||||
namespace SubAssetsToolbox.Utilities
|
||||
{
|
||||
internal static class AddressableEntryMigrator
|
||||
{
|
||||
internal static void MigrateOrRemoveEntry(string oldGuid, string parentGuid, string parentName)
|
||||
{
|
||||
AddressableAssetSettings settings = AddressableAssetSettingsDefaultObject.Settings;
|
||||
if (settings == null) return;
|
||||
|
||||
AddressableAssetEntry oldEntry = settings.FindAssetEntry(oldGuid);
|
||||
if (oldEntry == null) return;
|
||||
|
||||
string oldName = oldEntry.MainAsset != null ? oldEntry.MainAsset.name : oldGuid;
|
||||
string address = oldEntry.address;
|
||||
AddressableAssetGroup group = oldEntry.parentGroup;
|
||||
HashSet<string> labels = new(oldEntry.labels);
|
||||
|
||||
AddressableAssetEntry parentEntry = settings.FindAssetEntry(parentGuid);
|
||||
|
||||
if (parentEntry != null)
|
||||
{
|
||||
// New host asset was already an Addressable, so the new sub-asset
|
||||
// is now addressable thanks to its parent – and the old entry can be removed.
|
||||
settings.RemoveAssetEntry(oldGuid);
|
||||
Debug.Log(string.Format(Constants.AddressableEntryRemoved, oldName, address, parentName));
|
||||
return;
|
||||
}
|
||||
|
||||
// The new host asset wasn't an Addressable, so the new host needs to become one
|
||||
settings.RemoveAssetEntry(oldGuid);
|
||||
AddressableAssetEntry newEntry = settings.CreateOrMoveEntry(parentGuid, group, false, false);
|
||||
newEntry.address = address;
|
||||
foreach (string label in labels)
|
||||
newEntry.SetLabel(label, true, true, false);
|
||||
settings.SetDirty(AddressableAssetSettings.ModificationEvent.EntryMoved, newEntry, true);
|
||||
|
||||
Debug.Log(string.Format(Constants.AddressableEntryMigrated, oldName, address, parentName));
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user