Страница 1 из 2

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

СообщениеДобавлено: 05 окт 2017, 11:19
KoteKotovK
Если у меня большое кол-во неиспользуемых переменных в виде массива, из 3500 используются, например 1000, другие простаивают и я вроде неглупый, да и не первый день в программировании, но мне никак не дает это покоя, влияет это на что-то или нет? Хотя обойти эту возможную проблему я могу с помощью foreach, но это уже совсем другая история.

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

СообщениеДобавлено: 05 окт 2017, 12:37
jet_aleks
ни на что не влияет. кроме того что путаешься в переменных ну и немного памяти выделяется. А вообще 3500 тис переменных в одном классе - скорее всего плохая архитектура проекта и уж точно нужно сделать рефакторинг.

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

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

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

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

СообщениеДобавлено: 05 окт 2017, 12:54
jet_aleks
если переменные не нужны в данном объекте - зачем они вообще там нужны?
Может книгу по ооп перечитать!?
а вообще старайтесь делать классы не зависимы друг от друга. все станет проще.

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

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

Так у меня все так и работает =)
Да и вообщем я узнал то, что мне нужно. Буду делать через foreach, благо ничего сверх требовательного там не будет.

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

СообщениеДобавлено: 05 окт 2017, 14:00
jet_aleks
вот мне интересно что Вы подразумевавшие под foreach?

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

СообщениеДобавлено: 05 окт 2017, 14:56
Valentinus
jet_aleks писал(а):вот мне интересно что Вы подразумевавшие под foreach?

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

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

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

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

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

СообщениеДобавлено: 06 окт 2017, 13:06
KoteKotovK
Valentinus писал(а):
jet_aleks писал(а):вот мне интересно что Вы подразумевавшие под foreach?

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

Вы не правы. Проблема в том, что я не очень хотел использовать циклы, вместо этого хотел сделать прямое получение из массива, но сейчас понимаю что лучше уж цикл по несколько десятков проверок, нежели куча сотен-тысяч неиспользуемых переменных.

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

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

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

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

СообщениеДобавлено: 08 окт 2017, 14:48
юnity
void Update()
{
foreach(var input in _object.Inputs)
{
if(Input.GetButton(input))
{
Debug.Log(input);
}
}
}

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

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

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

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

СообщениеДобавлено: 11 окт 2017, 12:35
KoteKotovK
юnity писал(а):
void Update()
{
foreach(var input in _object.Inputs)
{
if(Input.GetButton(input))
{
Debug.Log(input);
}
}
}

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

Why? Есть массив в котором указаны кнопки для управления, далее проверка по нажатию той или иной кнопки и ссылка на другой скрипт с функциями, сейчас вместо ссылки Debug.Log для общей картины.

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

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

Чет я не додумался до этого :-? Идея и вправду хорошая, спасибо!

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

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