void SelectCollection(BaseItemCollection selectedCollection) { _currentSelectedCollection = selectedCollection; _collectionContainer.style.display = DisplayStyle.None; _itemContainer = _root.Q("SpellsContainer") as ScrollView; _itemContainer.Clear(); _title.text = _currentSelectedCollection.name; var scrollViews = new VisualElement[ItemLevels.Length]; for (var i = 0; i < ItemLevels.Length; i++) { var scrollView = new VisualElement(); scrollView.AddToClassList("ScrollItemContainer"); scrollView.styleSheets.Add(_styleSheet); scrollViews[i] = scrollView; var levelTitle = new Label("Level " + ItemLevels[i] + "+"); levelTitle.AddToClassList("ItemLevelTitle"); levelTitle.styleSheets.Add(_styleSheet); _itemContainer.Add(levelTitle); _itemContainer.Add(scrollView); } for (var u = 0; u < ItemLevels.Length; u++) { foreach (var item in _currentSelectedCollection.Items) { var button = new Button(); button.AddToClassList("SkillButton"); button.styleSheets.Add(_styleSheet); var label = new Label(item.name); label.AddToClassList("SkillButtonTitle"); label.styleSheets.Add(_styleSheet); button.Add(label); var icon = new Image(); icon.AddToClassList("SkillButtonIcon"); icon.styleSheets.Add(_styleSheet); var itemicon = item.GetIcon(ItemLevels[u]); if (itemicon == null) { itemicon = _defaultIcon; } icon.image = itemicon.texture; button.Add(icon); var field = new ObjectField(); field.value = item.GetIcon(ItemLevels[u]) ?? _defaultIcon; field.objectType = typeof(Sprite); var id = u; field.RegisterValueChangedCallback(changeEvent => { icon.image = ((Sprite)changeEvent.newValue)?.texture; item.SetIcon(id, (Sprite)changeEvent.newValue); }); button.Add(field); scrollViews[u].Add(button); } } _itemContainer.style.display = DisplayStyle.Flex; _backToCollectionButton.style.display = DisplayStyle.Flex; }