Текст

В этой теме 2 ответа, 3 участника, последнее обновление  KindRedSand 9 мес., 2 нед. назад.

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #4942

    spoty76
    Участник
    Сообщений:19

    Зарегистрирован:
    23.03.2017

    Репутация:2

    У меня цель сделать так, что, когда враг получает урон от огня (пересекается с ним), рядом с ним высвечивается текст на 1 секунду, поднимающийся вверх, и удаляется. Я это решил сделать через списки текста, потому что создавать в классе врага не получится, ведь если по врагу попали два раза сразу, надо чтобы выплыло два текста, или больше, но только проблема в том, что если во врага летит много огней, то игра подтормаживает, и это именно из-за текста, пробовал без него, все работало нормально. Есть какие-то варианты как можно оптимизировать?

    Я делаю так:

    класс текста:

    Проверка пересечения:

     

    #4943
    +1

    makish
    Участник
    Сообщений:14

    Зарегистрирован:
    04.06.2015

    Репутация:6

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

     

    #4944

    KindRedSand
    Участник
    Сообщений:82

    Зарегистрирован:
    05.04.2017

    Репутация:30

    Объясню оратора выше. В аргумент функции или метода по умолчанию мы передаём копию объекта, т.е. как правильно заметил makish под шрифт выделяется лишняя память которая удаляется при выходе из конструктора. Как по мне особо смысла передавать sf::Font даже через ссылку не совсем целесообразно. Лучше конечно сделать статичный загрузчик ресурсов который всегда будет иметь и передавать лишь 1 копию каждого ресурса, но ты можешь сделать шрифт и как глобальную переменную (Или статичную, принадлежащуюю какому-либо классу. Тогда вызов будет происходить как MyClass:MyFont). Если нужно получить доступ к тексту в другом .h .cpp файле с методом глобальной переменной то прописываешь где надо

    Со статичным членом класса – указываем где надо наш хидер и получам доступ к классу::переменной
    Так же лаги могет происходить из за: Кол-во объектов в поле отрисовки, Кол-во объектов в очереди обновления, Кол-во объектов проверяют друг с другом столкновения.
    Если хочешь можешь обращатся ко мне через дискорд https://discord.gg/MC3zMHn . На сайт я не особо часто захожу, но всегда могу помочь в дискорде

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)

Для ответа в этой теме необходимо авторизоваться.