2016-08-06 1 views
-1

У меня есть кнопка, и я хочу установить ее состояние. Я нашел Button.interactable и Button.IsInteractable(). Какая разница? Второй - «виртуальный bool», но я не знаю, что это значит.Разница между Button.interactable и Button.IsInteractable()

+0

См. Также [документация для ключевого слова 'virtual'] (https://msdn.microsoft.com/en-us/library/9fkccyh4.aspx). Если вам нужно что-то другое, пожалуйста, напишите новый вопрос, в котором вы объясните _precisely_, с чем вам нужна помощь. Объясните, какие исследования вы уже сделали, и что конкретно касается информации, которую вы обнаружили, с которой вам по-прежнему нужна помощь. Пожалуйста, убедитесь, что ваш вопрос требует чего-то, кроме того, что уже четко указано в ссылках на язык. –

+0

@PeterDuniho благодарит за помощь. Оба приведенных ниже ответа были чрезвычайно полезны и понятны. Я думаю, почему я не понял 'virtual', потому что некоторое время я использовал java, но недавно я начал с C# (в java afaik нет« виртуального »). Честно говоря, теперь вопрос по-настоящему кажется слишком простым. –

+0

В Java нет ключевого слова 'virtual', но только потому, что все Java-методы являются виртуальными по умолчанию. Если вам нужен не виртуальный метод в Java, вы помечаете его «final». –

ответ

1

Buttonнаследует от UI.Selectable и поэтому он реализует метод IsInteractable(), что это просто проверка, в то время как Button.interactable позволяют изменить собственности.

Насколько виртуальный метод , то оно означает, что метод может быть переопределен в производного класса, и что может случиться с new ключевым словом (что переопределяет метод только для полученных класс) или с override (который может также влияет на база класса)

+0

Я не вижу, как это отвечает на вопрос. 'interactiveable' и' IsInteractable() 'являются членами' Selectable'. Вы можете _check_ значение с 'взаимодействующим' так же легко, как с' IsInteractable() '. Что такое _difference_ между ними, кроме очевидных различий «свойство против метода»? –

+0

@PeterDuniho Помимо очевидного факта, что один - это только чек, а другой позволяет сделать изменения, я попытался подчеркнуть тонкую разницу, связанную с тем, что виртуальный (что-то упомянутое OP), то есть тот факт, что виртуальный метод может быть переопределено также для Selectable, когда это экземпляр Button ... –

+0

Члену класса не обязательно быть 'virtual', чтобы быть« переопределенным »с ключевым словом' new' в производном классе. Мне кажется, что эта часть вашего ответа не такая тщательная или полезная, как то, что OP мог найти просто, прочитав [документацию] (https://msdn.microsoft.com/en-us/library/9fkccyh4.aspx). Точно так же простое понимание разницы между свойством и методом в C# привело бы их к тому же пониманию, что и первая часть вашего ответа. Я бы подумал, что OP ищет больше обсуждения Unity3d. –

1

Оба использует Selectable.interactable под капотом, чтобы проверить, если кнопка включена или выключена.

Существует только один разница.

Button.IsInteractable() является готов только и используется для проверки если Button включена или отключена. Это также функция.

Button.interactable может быть использована для проверки, если Button включен или выключен, а также может быть использован для включения или отключения кнопки, установив его на true или false. Button.IsInteractable() не может этого сделать.

+0

Оба возвращают 'bool ', а не [' Selectable'] (https://docs.unity3d.com/ScriptReference/UI.Selectable.html). –

+0

Ooops. Это не то, что я хотел сказать. Исправлено. Хотел сказать, что они оба используют Selectable.interactable для выполнения своей работы и являются теми же, за исключением того, что один является функцией, а другой - нет. Кроме того, функция одна только для чтения – Programmer

+0

Хорошо, тогда ... что метод «только для чтения» (я предполагаю, что вы действительно не имели в виду «только готовый»), очевидно для всех, кто знает C#. Как это на самом деле отвечает на вопрос? Когда OP будет использовать свойство, а не метод или наоборот? Кроме того, если кто-то переопределяет виртуальный метод 'IsSelectable()', какова тогда связь между свойством и методом? Я нахожу отсутствие по-настоящему полезных ответов на этот вопрос, обескураживающий. Пока что вы оба указали очевидное. –