Предыдущие версии
Название | Размер | Обновлено | Версия игры | Загрузок | |
v2 release | 4.02 KB | Feb 28, 2015 | 6.1.0 | 713 | ![]() |
v1 release | 4.03 KB | Feb 10, 2015 | 6.0.3 | 119 | ![]() |
r4 alpha | 4.20 KB | Feb 28, 2015 | 6.1.0 | 49 | ![]() |
r2 alpha | 4.15 KB | Feb 10, 2015 | 6.0.3 | 42 | ![]() |
Скриншоты
Описание
Эта библиотека поможет вам разделить большое количество вызовов, которые вы не можете контролировать в условиях боевой блокировки, чтобы разделить «волокна» в одном кадре, чтобы избежать ошибок «скрипт работал слишком долго».
Доступные функции
Только один на данный момент:
lib:WrapVoidMethod(объект, метод)
Данного объекта и имя метода, эта функция заменит оригинальный способ с оболочкой,
либо просто назвать оригинальным, если ты вне боя или перенести его на отдельные «волокна»
в одном кадре создается путем вызова таймер от Blizzard, что, оказывается, есть отдельная исполнения
срок и таким образом, помогает избежать «сценарий выполняется слишком долго» ошибка вызвана огромным количеством вызовов за кадр.
Эта функция предназначена для обертывания вызовов, которые достаточно быстры сами по себе, но которые могут быть вызваны
в количествах, которые вы, как разработчик, не можете контролировать. Например: кнопки действий или макросов, если ваш аддон
позволяет создавать неограниченное количество кнопок — даже если обновление одной кнопки надежно занимает, скажем, 2 мс, пользователь,
создавший более 100 кнопок, нажмет «script ran too long»; кнопки слотов элементов — их количество просто естественно
увеличивается по мере того, как Blizzard вводит большие пакеты; и т. д.
Обернутый метод не должен иметь никаких аргументов или возвратов, кроме подразумеваемого «я», поскольку они молча отбрасываются.
Это обычно соответствует сигнатуре методов: Update, которые считывают данные из своего экземпляра.
Постарайтесь максимально оптимизировать проблемную функцию — даже если вы обернете ее, общее время вызовов
все равно будет иметь заметный сбой FPS, а обертка также добавит к этому некоторые накладные расходы.
Сделайте несколько отдельных вызовов вручную для разных кадров, если ваши обновления имеют какой-то предсказуемый шаблон
и на самом деле не нуждаются в визуальном или каком-либо другом мгновенном результате. Например, обновление текстуры, подсчета или перезарядки
на слоте элемента должно произойти, как только игрок откроет окно сумки или произойдет соответствующее событие, в то время как рисование
границы выделения для пользовательского поиска может быть разделено на несколько следующих кадров, и игрок даже не заметит этого.
Включенный файл EXAMPLE. lua показывает пример использования и позволяет проверить, как он работает.
Добавить комментарий