Ejemplo n.º 1
0
        public static List <string> GetLabels()
        {
            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);

            return(labelNames);
        }
Ejemplo n.º 2
0
        private static void GetAllExistLabels()
        {
            var tableProp = addressableSettings.GetType().GetProperty("labelTable",
                                                                      BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Instance);

            if (tableProp == null)
            {
                return;
            }
            var tableInstance = tableProp.GetValue(addressableSettings);

            if (tableInstance == null)
            {
                return;
            }
            var labelFiled = tableInstance.GetType().GetField("m_LabelNames",
                                                              BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

            if (labelFiled == null)
            {
                return;
            }

            if (!(labelFiled.GetValue(tableInstance) is List <string> labelList))
            {
                return;
            }
            if (labels != null)
            {
                labels.Clear();
                foreach (var lab in labelList)
                {
                    labels.Add(lab);
                }
            }
            else
            {
                labels = new HashSet <string>(labelList);
            }
        }