Я знаю про ограничение 100 видимых тексттэгов на игрока, но даже когда игрок видит всего 2-5 плавающих текстов, некоторые из них могут пропадать досрочно.
Практически все тексттэги в моей карте создаются при помощи этой функции:
function CreateTextTagForPlayer takes player owner, unit target, string reward returns nothing
local texttag text
local integer i
local real vel = 40 * 0.071 / 128
local real velx = vel * Cos(90 * bj_DEGTORAD)
local real vely = vel * Sin(90 * bj_DEGTORAD)
set text = CreateTextTag()
call SetTextTagPos(text, GetUnitX(target) - GetRandomReal(-50,50), GetUnitY(target) - GetRandomReal(-50,50), 0)
call SetTextTagColor(text, 255, 255, 255, 255)
call SetTextTagText(text, reward, 0.023)
call SetTextTagVelocity(text, velx, vely)
call SetTextTagPermanent(text, false)
call SetTextTagFadepoint(text, 2)
call SetTextTagLifespan(text, 5)
call SetTextTagVisibility(text, false)
if GetLocalPlayer() == owner then
call SetTextTagVisibility(text, true)
endif
set text = null
endfunction
В карте ещё создаётся примерно 10-20 тексттэгов, но большинство из них скрыто для игроков при помощи функции SetTextTagVisibility. Я много раз перепроверил, на экране игрока (даже если по всей карте промотать камеру) практически нет тексттэгов, о превышении лимита в 100 и речи не может идти. В чём может быть проблема?
Принятый ответ
goodlyhero, оказывается глобальные массивы тексттэгов надо обнулять после уничтожения. Обалдеть просто, долго промучился с этим.
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован goodlyhero
Ограничение на 100 тексттагов - сколько создано на локальной машине.
Насколько помню, в нем также учавствует текст с рудников, у критов и т.п.
Попробуйте при создании тексттага повыводить хэндл созданного через GetHandleId, если оно нулевое - вероятно, у вас достигнут лимит и нужно что-то делать. Можно например уменьшать время жизни тт.
И в целом, скорее всего, можно заменить установку видимости на дестрой. Не должно повлиять.
Но может я и ошибаюсь.