22 / 11 / 12
Регистрация: 18.10.2019
Сообщений: 56
1

ошибка в коде C#UI кнопки в юнити2д

23.04.2020, 21:08. Показов 3106. Ответов 15

Здравствуйте, я работаю над созданием 2д платформера, но при попытке сделать "открывание" после прохождения уровня следующего уровня я столкнулся с проблемой.
В общем, есть ключ (Lvl), в котором хранится информация о пройденных уровнях, массив кнопок уровней (lvls), но при попытке обращения к компоненту interactable у кнопки юнити выдают следующую ошибку: " error CS1061: 'Button' does not contain a definition for 'interactable' and no accessible extension method 'interactable' accepting a first argument of type 'Button' could be found (are you missing a using directive or an assembly reference?)".
Кусок кода приложу ниже. Пожалуйста подскажите в чем проблема.
C#
1
2
3
4
5
6
7
8
9
10
11
public Button[] lvls;
    void Start()
    {
        if (PlayerPrefs.HasKey("Lvl"))
            for (int i = 0; i < lvls.Length; i++)
            {
                if (i <= PlayerPrefs.GetInt("Lvl"))
                    lvls[i].interactable = true;
                else
                    lvls[i].interactable = false;
            }
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2020, 21:08
Ответы с готовыми решениями:

Ошибка в коде поиска для кнопки
Пытаюсь настроить поиск на форме по найденому коду в интернете, но никак под свою форму не могу его...

Ошибка в коде (Access Violation после третьего нажатия кнопки)
Помогите исправить ошибку в коде. После продолжительной игры(после 3-го нажатия на &quot;Новая игра&quot;),...

Определить name кнопки при клике по ней (кнопки создаются в коде и хранятся в массиве)
Вечер добрый! В программе я генерирую массив кнопок, которые рисуются в такой штуке: &lt;Grid...

Ошибка в коде взаимодействия клиента и сервера на основе протокола TCP/IP (ошибка в коде)
Задание: Осуществить взаимодействие клиента и сервера на основе протокола TCP/IP. Реализовать...

15
66 / 46 / 20
Регистрация: 09.10.2013
Сообщений: 156
23.04.2020, 21:14 2
BattleCrow, чем конкретно вас не устроило сообщение компилятора? Что конкретно вам неясно?
0
22 / 11 / 12
Регистрация: 18.10.2019
Сообщений: 56
24.04.2020, 08:05  [ТС] 3
В чём суть ошибки? Вроде же всё нормально. Я просто не понимаю что я неправильно написал, что вызывает ошибку.
0
66 / 46 / 20
Регистрация: 09.10.2013
Сообщений: 156
24.04.2020, 09:15 4
BattleCrow, текст ошибки приводит абсолютно ясную информацию вам, как разработчику. Какие конкретно части этого текста вам кажутся затруднительными в восприятии?
Как лично вы интерпретируете для себя текст данной ошибки?
0
22 / 11 / 12
Регистрация: 18.10.2019
Сообщений: 56
24.04.2020, 09:29  [ТС] 5
Я думаю, что текст ошибки гласит, что не существует у кнопки свойства "interactable", но ведь это не так, не так ли?
0
66 / 46 / 20
Регистрация: 09.10.2013
Сообщений: 156
24.04.2020, 09:50 6
BattleCrow, давайте вместе разбираться. Вы привели пример вашего кода, на который компилятор выдает ошибку. В контексте тематики данного раздела форума всплывает вполне логичное предположение о том, что данный код находится в классе-наследнике MonoBehaviour и тип Button относится к пространству имен UnityEngine.UIElement (поскольку обратного не было сказано в вашем первом сообщении).
Далее мы идем в стандартный справочник и находим там описание класса Button. К сожалению, как и говорилось в тексте ошибки, члена с именем interactable мы там вообще не находим.

Дополнительно можно просто поискать использование такого имени хоть где-нибудь в Unity API. Такое есть лишь в CanvasGroup и можно предположить, что вы где-то не так интерпретировали для себя некоторую информацию и сами себя запутали.

Надеюсь, вам в какой-то степени помогут мои размышления.
0
2218 / 1418 / 823
Регистрация: 26.10.2018
Сообщений: 4,076
24.04.2020, 09:52 7
Цитата Сообщение от BattleCrow Посмотреть сообщение
но ведь это не так, не так ли?
Ты не путай батоны из using UnityEngine.UIElements; и using UnityEngine.UI;

Добавлено через 58 секунд
Да, еще как вариант, ты создал свой класс Button, такое тоже бывает)
0
22 / 11 / 12
Регистрация: 18.10.2019
Сообщений: 56
24.04.2020, 10:20  [ТС] 8
Простите, если мои вопросы глупые, я еще учусь созданию игр в юньке. Итак, при добавлении using UnityEngine.UIElements, компилятор пишет что таковой не существует. (Версия юнити, если вдруг важно 2018.4.19f1). Сам я учусь по уроку в интернете т там разбирается данный скрипт, но при идентичном написании кода у меня компилятор выдаёт ошибку, в уроке же всё исправно работает.
0
2218 / 1418 / 823
Регистрация: 26.10.2018
Сообщений: 4,076
24.04.2020, 10:35 9
Цитата Сообщение от BattleCrow Посмотреть сообщение
в уроке же всё исправно работает
Давай сюда ссылку на урок.
0
66 / 46 / 20
Регистрация: 09.10.2013
Сообщений: 156
24.04.2020, 10:36 10
BattleCrow, можете привести полный код вашего класса? Возможно, как упомянул 1max1, где-то ещё в проекте может быть класс с именем Button.
0
22 / 11 / 12
Регистрация: 18.10.2019
Сообщений: 56
24.04.2020, 10:46  [ТС] 11
Не получится, т.к. он платный.

Добавлено через 2 минуты
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using UnityEngine.UIElements;
 
public class Menu : MonoBehaviour
{
    public Button[] lvls;
    void Start()
    {
        if (PlayerPrefs.HasKey("Lvl"))
            for (int i = 0; i < lvls.Length; i++)
            {
                if (i <= PlayerPrefs.GetInt("Lvl"))
                    lvls[i].interactable = true;
                else
                    lvls[i].interactable = false;
            }
    }
    public void OpenScene(int index)
    {
        SceneManager.LoadScene(index);
    }
    public void ExitGame()
    {
        Application.Quit();
    }
    public void DelKeys()
    {
        PlayerPrefs.DeleteAll();
    }
}]
Здесь ничего сверхъестественного, переключение сцен, выход из игры и удаление ключей.
0
66 / 46 / 20
Регистрация: 09.10.2013
Сообщений: 156
24.04.2020, 11:05 12
Лучший ответ Сообщение было отмечено BattleCrow как решение

Решение

BattleCrow, поищите ещё по проекту скрипт с именем Button. Если такого нет, то будем думать дальше...
1
1585 / 963 / 509
Регистрация: 23.02.2019
Сообщений: 2,505
24.04.2020, 11:07 13
Цитата Сообщение от BattleCrow Посмотреть сообщение
Не получится, т.к. он платный.
Платный урок должен иметь работающие исходники. Попробуйте найти их.
0
284 / 235 / 126
Регистрация: 24.12.2014
Сообщений: 704
24.04.2020, 11:20 14
Цитата Сообщение от BattleCrow Посмотреть сообщение
using UnityEngine.UIElements;
Вот это удалите.

В нём и в "UnityEngine.UI" есть класс "Button". Скорее всего редактор не знает какой именно класс Вы пытаетесь использовать. Или укажите явно:
C#
1
public UnityEngine.UI.Button[] lvls;
1
22 / 11 / 12
Регистрация: 18.10.2019
Сообщений: 56
24.04.2020, 11:45  [ТС] 15
Всё, ребят, спасибо всем за помощь, оказалось у меня есть еще скрипт Button и он вызывал конфликт, помогло переименование этого скрипта.
0
0 / 0 / 0
Регистрация: 09.07.2021
Сообщений: 4
09.07.2021, 15:57 16
Извиняюсь за то, что поднял топик, но у меня точно такая же проблема, хотя не знаю даже проблема ли? Ведь юнити не ругается, всё как будто и правильно, но не работает.

У меня просто не работает включение и отключение iteractable

C#
1
2
3
4
5
6
7
8
9
10
11
12
    void Start()
 
    {
        if (PlayerPrefs.HasKey("Lvl"))
            for (int i = 0; i <  lvls.Length; i++)
            {
                if (i <= PlayerPrefs.GetInt("Lvl"))
                    lvls[i].interactable = true;
                else
                    lvls[i].interactable = false;
            }
    }
при запуске игра никак не реагирует на эту часть кода. Если я ставлю галочку Iteractable в игре - она всегда активирована. Убираю - всегда выключена. Ошибок в консоли никаких нет. Может ли это быть связано с тем, что я сижу на юньке 2020.3 , а ролик вроде от 2018 ?

Добавлено через 12 минут
Извиняюсь еще раз, проблема решена, я был недостаточно внимателен (
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.07.2021, 15:57

Лагает игра на телефоне юнити2д
Здравствуйте! При запуске игры в юнити ремоут 5, она лагает(анимация не такая быстрая и нажатие...

рандомная генерация тайлов(рул тайл) юнити2д
как сделать рандомную генерацию тайлов(рул тайл) юнити2д

Ошибки в коде обработки кнопки
Private Sub CommandButton1_Click() 'Определяем переменную, в которой будет храниться размер...

Не отображается картинка для кнопки в коде html
Здравствуйте ,помогите разобраться с отображением картинки для кнопки.. На локальном сервере всё в...

Обработка события Click кнопки создаваемой в коде
в коде создаем панельку , обычно чтоб перейти в настройки кнопки по нажатию нужно кликнуть 2 раза ,...

Имитация нажатия кнопки мыши через процедуру в коде
Есть типичная процедура OnMouseDown: procedure TForm1.IMD(Sender: TObject; Button: TMouseButton;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.