Вопрос от быдлокодера про большое кол-во переменных

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Вопрос от быдлокодера про большое кол-во переменных

Сообщение KoteKotovK 05 окт 2017, 11:19

Если у меня большое кол-во неиспользуемых переменных в виде массива, из 3500 используются, например 1000, другие простаивают и я вроде неглупый, да и не первый день в программировании, но мне никак не дает это покоя, влияет это на что-то или нет? Хотя обойти эту возможную проблему я могу с помощью foreach, но это уже совсем другая история.
KoteKotovK
UNITрон
 
Сообщения: 267
Зарегистрирован: 20 июн 2014, 06:41

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение jet_aleks 05 окт 2017, 12:37

ни на что не влияет. кроме того что путаешься в переменных ну и немного памяти выделяется. А вообще 3500 тис переменных в одном классе - скорее всего плохая архитектура проекта и уж точно нужно сделать рефакторинг.
Toy Trophy:
_https://itunes.apple.com/us/app/toy-trophy/id1180494544?l=ru&ls=1&mt=8
_https://www.youtube.com/watch?v=f5MgMJn15KU
_https://www.youtube.com/watch?v=CZ0viTyf63g
jet_aleks
Старожил
 
Сообщения: 609
Зарегистрирован: 02 июл 2013, 22:28
Откуда: г.Харьков
Skype: jetsan8

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение KoteKotovK 05 окт 2017, 12:50

jet_aleks писал(а):ни на что не влияет. кроме того что путаешься в переменных ну и немного памяти выделяется. А вообще 3500 тис переменных в одном классе - скорее всего плохая архитектура проекта и уж точно нужно сделать рефакторинг.

Не, там вообщем идет деление на большое количество разных объектов. Что-то по типу 100 объектов на каждом 35 переменных, ну и произведение = 3500, но многие переменные простаивают, потому что не нужны именно в этом объекте, но иначе только foreach в update, да и вообщем большого количества проверок за кадр не такой большой, в сумме где-то 50. Кстати, может сможете подсказать, как сделать разное управление для каждого объекта через базу данных? Сейчас вариант добавлять каждому объекту массив со всеми возможными используемыми кнопками, что равняться например 35, и прямолинейно брать переменную Array[IndexInput]. Иначе foreach, но меня он всегда пугает из-за своего некого требования к системе, но походу иначе никак.
Если не поняли общую картину, то есть разные объекты у которых свои функции (они ведь разные), но вот как подрубить туда управление, я не уверен.
KoteKotovK
UNITрон
 
Сообщения: 267
Зарегистрирован: 20 июн 2014, 06:41

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение jet_aleks 05 окт 2017, 12:54

если переменные не нужны в данном объекте - зачем они вообще там нужны?
Может книгу по ооп перечитать!?
а вообще старайтесь делать классы не зависимы друг от друга. все станет проще.
Toy Trophy:
_https://itunes.apple.com/us/app/toy-trophy/id1180494544?l=ru&ls=1&mt=8
_https://www.youtube.com/watch?v=f5MgMJn15KU
_https://www.youtube.com/watch?v=CZ0viTyf63g
jet_aleks
Старожил
 
Сообщения: 609
Зарегистрирован: 02 июл 2013, 22:28
Откуда: г.Харьков
Skype: jetsan8

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение KoteKotovK 05 окт 2017, 13:17

jet_aleks писал(а):если переменные не нужны в данном объекте - зачем они вообще там нужны?
Может книгу по ооп перечитать!?
а вообще старайтесь делать классы не зависимы друг от друга. все станет проще.

Так у меня все так и работает =)
Да и вообщем я узнал то, что мне нужно. Буду делать через foreach, благо ничего сверх требовательного там не будет.
KoteKotovK
UNITрон
 
Сообщения: 267
Зарегистрирован: 20 июн 2014, 06:41

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение jet_aleks 05 окт 2017, 14:00

вот мне интересно что Вы подразумевавшие под foreach?
Toy Trophy:
_https://itunes.apple.com/us/app/toy-trophy/id1180494544?l=ru&ls=1&mt=8
_https://www.youtube.com/watch?v=f5MgMJn15KU
_https://www.youtube.com/watch?v=CZ0viTyf63g
jet_aleks
Старожил
 
Сообщения: 609
Зарегистрирован: 02 июл 2013, 22:28
Откуда: г.Харьков
Skype: jetsan8

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение Valentinus 05 окт 2017, 14:56

jet_aleks писал(а):вот мне интересно что Вы подразумевавшие под foreach?

ну человек наверное не умел списками, только статичным массивом работать. ну и с запасом его делал.
другое мое творчество: samlib.ru/u/us_w/
Аватара пользователя
Valentinus
Старожил
 
Сообщения: 889
Зарегистрирован: 24 мар 2017, 18:33

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение юnity 06 окт 2017, 12:30

KoteKotovK писал(а):
jet_aleks писал(а):Кстати, может сможете подсказать, как сделать разное управление для каждого объекта через базу данных? Сейчас вариант добавлять каждому объекту массив со всеми возможными используемыми кнопками, что равняться например 35, и прямолинейно брать переменную Array[IndexInput].

Зачем?? Если можно в редакторе дл каждого префаба назначить нужные кнопки, просто в контроллере в коде названия кнпок использовать поля их префаба
Синтаксис:
Используется csharp
if(Input.GetKeyDown(префаб.поле))
Give exact coordinates of the decision of the problems
Аватара пользователя
юnity
UNITрон
 
Сообщения: 290
Зарегистрирован: 21 июл 2015, 18:30

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение KoteKotovK 06 окт 2017, 13:06

Valentinus писал(а):
jet_aleks писал(а):вот мне интересно что Вы подразумевавшие под foreach?

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

Вы не правы. Проблема в том, что я не очень хотел использовать циклы, вместо этого хотел сделать прямое получение из массива, но сейчас понимаю что лучше уж цикл по несколько десятков проверок, нежели куча сотен-тысяч неиспользуемых переменных.
KoteKotovK
UNITрон
 
Сообщения: 267
Зарегистрирован: 20 июн 2014, 06:41

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение KoteKotovK 06 окт 2017, 13:13

юnity писал(а):Зачем?? Если можно в редакторе дл каждого префаба назначить нужные кнопки, просто в контроллере в коде названия кнпок использовать поля их префаба
Синтаксис:
Используется csharp
if(Input.GetKeyDown(префаб.поле))

Вы не понимаете что ИМЕННО мне нужно, ответ на вопрос я уже получил, а ваши потуги предугадать - бессмысленны. Никакой агрессии, просто если вы хотите получить полную картину, весь скрипт, мне придется описать довольно большой алгоритм, да и объяснять как он функционирует, чего делать я не хочу, потому что проблема, вообщем, решена.
Синтаксис:
Используется csharp
    void Update()
    {
            foreach(var input in _object.Inputs)
            {
                if(Input.GetButton(input))
                {
                    Debug.Log(input);
                }
            }
    }
 
KoteKotovK
UNITрон
 
Сообщения: 267
Зарегистрирован: 20 июн 2014, 06:41

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение юnity 08 окт 2017, 14:48

void Update()
{
foreach(var input in _object.Inputs)
{
if(Input.GetButton(input))
{
Debug.Log(input);
}
}
}

И случайными кнопками играть?? :-o
Give exact coordinates of the decision of the problems
Аватара пользователя
юnity
UNITрон
 
Сообщения: 290
Зарегистрирован: 21 июл 2015, 18:30

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение Cr0c 09 окт 2017, 09:23

Цель неизвестна, алгоритм скрыт. Советов можно дать 5+ только по архитектуре, не считая советов по реализации ))
Вообще правильно сказали про списки. В объекте хранить лист с кейкодами можно. Массив на 100 объектов? Это классы? Структуры? Можно брать из всех объектов кейкоды и забивать в словарик <KeyCode, MyObject> и получать нужный объект по кейкоду, например. А потом уже передавать этот кейкод в сам объект. Пусть объект и обрабатывает нажатие. Вот и отсутствие for/foreach.
Аватара пользователя
Cr0c
Адепт
 
Сообщения: 3035
Зарегистрирован: 19 июн 2015, 13:50
Skype: cr0c81

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение KoteKotovK 11 окт 2017, 12:35

юnity писал(а):
void Update()
{
foreach(var input in _object.Inputs)
{
if(Input.GetButton(input))
{
Debug.Log(input);
}
}
}

И случайными кнопками играть?? :-o

Why? Есть массив в котором указаны кнопки для управления, далее проверка по нажатию той или иной кнопки и ссылка на другой скрипт с функциями, сейчас вместо ссылки Debug.Log для общей картины.
KoteKotovK
UNITрон
 
Сообщения: 267
Зарегистрирован: 20 июн 2014, 06:41

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение KoteKotovK 11 окт 2017, 12:38

Cr0c писал(а):Цель неизвестна, алгоритм скрыт. Советов можно дать 5+ только по архитектуре, не считая советов по реализации ))
Вообще правильно сказали про списки. В объекте хранить лист с кейкодами можно. Массив на 100 объектов? Это классы? Структуры? Можно брать из всех объектов кейкоды и забивать в словарик <KeyCode, MyObject> и получать нужный объект по кейкоду, например. А потом уже передавать этот кейкод в сам объект. Пусть объект и обрабатывает нажатие. Вот и отсутствие for/foreach.

Чет я не додумался до этого :-? Идея и вправду хорошая, спасибо!
KoteKotovK
UNITрон
 
Сообщения: 267
Зарегистрирован: 20 июн 2014, 06:41

Re: Вопрос от быдлокодера про большое кол-во переменных

Сообщение KoteKotovK 11 окт 2017, 20:17

Я нашел хороший пример, который наглядно покажет какая у меня была проблема. В Unity есть так называемые Input'ы (InputManager/Axes) на уровне движка, они в виде массива классовых переменных и имеют много настроек, некоторые необязательно использовать и они остаются пустыми, у меня вообщем была похожая проблема, только вот для движка это не проблема, походу.
KoteKotovK
UNITрон
 
Сообщения: 267
Зарегистрирован: 20 июн 2014, 06:41

След.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 15