как получить адресные метки, назначенные в адресном окне скрипта - PullRequest
0 голосов
/ 23 апреля 2020

С новым адресом, представленным в Unity, мы можем назначить каждый актив, который попадает в другую группу, с меткой в ​​окне Addressable.

enter image description here

Есть ли способ получить эти метки в скрипте?

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Мне понадобилось немного времени, чтобы понять это. Кажется, что метки хранятся в виде списка LabelTable в;

UnityEditor.AddressableAssets.AddressableAssetSettingsDefaultObject.Settings;

Однако этот список является закрытым. В сценарии мы можем:

  • добавить метку к LabelTable, вызвав AddressableAssetSettingsDefaultObject.Settings.AddLabel()
  • удалить метку из LabelTable, вызвав AddressableAssetSettingsDefaultObject.Settings.RemoveLabel()

Кроме этих двух методов, нет другого способа доступа к LabelTable

Один из способов обойти это, используя System.Reflection, что позволило бы нам обойти неопубликованные c доступ к LabelTable.

AddressableAssetSettings settings = UnityEditor.AddressableAssets.AddressableAssetSettingsDefaultObject.Settings;
BindingFlags bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic;
object labelTable = settings.GetType().GetProperty("labelTable", bindingFlags).GetValue(settings);
List<string> labelNames = (List<string>)labelTable.GetType().GetProperty("labelNames", bindingFlags).GetValue(labelTable);

Конечно, использование System.Reflection вызовет удивление, так как мы пытаемся получить доступ к неопубликованному члену c. Однако в этом случае, я думаю, команда единства не продумала это до конца. Должен быть способ чтения этих ярлыков, чтобы мы могли их удалить, добавить в зависимости от того, что у нас в списке

0 голосов
/ 23 апреля 2020

Есть грубый способ сделать это. Вы можете изменить файл, отвечающий за групповые данные. Выполните синтаксический анализ AddressableAssetsData \ AssetGroups [your_group_name] .asset file и добавьте метки вручную в поле m_SerializedLabels.

Пример: измените это:
m_GUID: 5f0bfe8eea13575418016bf83784f8e0
адрес_Ма_с_адреса_экспресса: 0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_2_0_0_0_0_0_0_0_0_0 -0 -3-3_0 m_SerializedLabels: []

к этому:
m_GUID: 5f0bfe8eea13575418016bf83784f8e0
m_адрес: DefaultAvatarAnimation
m_ReadOnly: 0
* * label: 0 *1012* m: 1016 * et c

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...