SFML и C++ Уроки \ Разработка игр › Форумы › Логика игр › Генераторы рун теряются в действиях › Ответ в теме: Генераторы рун теряются в действиях
Всё, я решил весь список своих проблем.
Заметки на будущее для вас.
Никогда не используйте внутри цикла метод:
1 |
setTextureRect(sf::IntRect(left,top,width,height)); |
Это напрягает процессор. Используйте эту функцию только по надобности.
Если вы используете std::vector, или std::list, и вам нужно обратиться к последнему созданному элементу отдельно, не проходя по всем элементам. Используйте волшебные методы этих инструментов:
Назначаем указатель на последний объект списка, который мы сможем обработать не затрагивая остальные элементы.
1 |
YouClass *ptr = YouList.back(); |
Но есть одна важная вещь, о которой вам стоит помнить.
Используя этот метод вам нужно дополнительное условие:
1 |
if(!YouList.empty()) |
Это условие поможет избежать обращение к пустому списку, иначе вылетит ошибка с обращением к несуществующему адресу памяти.
Ещё одно правило, которое следует выполнять, это загружать не более одной текстуры на все <<одноподобные>> объекты. Иначе ресурсы компьютера могут не осилить вашу 2D игру.
Что уж там о GTA V говорить…
Загруженную текстуру можно передавать в качестве аргумента в виде ссылки.
Выше в теме я сказал что заменил std::list на std::vector, чтобы обратиться к последнему элементу. Знайте – std::list тоже так умеет.
Выполняя ряд этих правил ваша игра будет летать, а не ползать
Спасибо за внимание и помощь 😀