Итак, у меня есть скрипт, который создает кнопки, и скрипт, который делает эти кнопки взаимодействующими в определенных сценариях.
Проблема в том, что в скрипте, который создает кнопки, 2 из них создают больше дочерних кнопок под ними.С помощью моего следующего кода я могу легко сделать эти кнопки доступными для взаимодействия, когда захочу, но они не узнают родителей.Я понимаю, почему (потому что мой список проверяет childs), но я понятия не имею, как это исправить.Сделать второй список для родительских кнопок или?Код ниже.
MenuButton[] MenuButtons = _selectionEditMenuPanel.GetComponentsInChildren<MenuButton>(true);
for (int i = 0; i < MenuButtons.Length; i++)
{
if (MenuButtons[i].name == "edit_group" || MenuButtons[i].name == "edit_ungroup")
{
if (_selection.SelectedPageObject.IsGroup())
{
MenuButtons[i].GetComponent<MenuButton>().menuButton.GetComponent<TestButton>().Interactable = true;
if (!((PageObjectGroup)_selection.SelectedPageObject).IsTempGroup)
{
MenuButtons[i].title.text = TranslationSystem.Request("edit_ungroup");
MenuButtons[i].name = "edit_ungroup";
}
else
{
MenuButtons[i].title.text = TranslationSystem.Request("edit_group");
MenuButtons[i].name = "edit_group";
}
}
else
{
MenuButtons[i].title.text = TranslationSystem.Request("edit_group");
MenuButtons[i].name = "edit_group";
MenuButtons[i].GetComponent<MenuButton>().menuButton.GetComponent<testButton>().Interactable = false;
}
}
if (MenuButtons[i].name == "edit_crop")
{
//Only make crop button interactive when pageobject bitmap is selected
MenuButtons[i].GetComponent<MenuButton>().menuButton.GetComponent<testButton>().Interactable = _selection.SelectedPageObject is PageObjectBitmap;
}
//TODO Make this work with edit align? It works with other buttons.
if (MenuButtons[i].name == "edit_align")
{
if (!_selection.SelectedPageObject.IsGroup())
{
MenuButtons[i].GetComponent<MenuButton>().menuButton.GetComponent<testButton>().Interactable = false;
}
else
{
MenuButtons[i].GetComponent<MenuButton>().menuButton.GetComponent<testButton>().Interactable = true;
}
}
Он работает для всего, кроме последней проверки, edit_align (это кнопка с дочерними элементами под ней). Я опубликую ниже общую настройку скрипта создания кнопки, но ПРИМЕЧАНИЕ:Я не могу редактировать эти скрипты, это не мое, поэтому, пожалуйста, не советуйте мне редактировать это.
private static MenuItem _selectionEditMenu = new MenuItem(Resources.Load<Sprite>("Edit_128"))
{ new MenuItem(Resources.Load<Sprite>("Sprites/Icons/Align_Left_1_128"), "edit_align", true, true, null)
{
new MenuItem(Resources.Load<Sprite>("Sprites/Icons/Distribute_Horizontally_128"), "edit_align_distribute_evenly"
new MenuItem(Resources.Load<Sprite>("Sprites/Icons/Uniform_Height_128"), "edit_align_uniform_height"
Я могу достичь edit_align_Distribute_evenly & Uniform height, но родительский элемент выше не называется: edit_align.
ПРИМЕЧАНИЕ. Я оставил здесь синтаксис и т. Д. Причину названий компаний.Так что не беспокойтесь о неправильном синтаксисе.Спасибо, каждая помощь высоко ценится.