|
有一段jass代码 目的是求得一个可用的坐标点  这段代码短时间运行多次就会bug 求原因 及解决方案
首先随机在地图上找个点
如果这个点的地面可通行=false 或者 在某3个区域内
就从全局变量里预设好的23个点 里选一个
返回该点
function getRandomLoc takes nothing returns location
    local location nub = GetRandomLocInRect(GetPlayableMapRect())
    if (RectContainsLoc(gg_rct_RandomF1,nub) == true or RectContainsLoc(gg_rct_RandomF3,nub) == true or IsTerrainPathableBJ(nub, PATHING_TYPE_WALKABILITY) == true  or RectContainsLoc(gg_rct_BossArea,nub) == true) then
        
        set nub = udg_birthPoint[GetRandomInt(1, 23)]
        call DisplayTimedTextToPlayer( Player(0), 0, 0, 10.00, ( "getRandomLoc()修正为:X" + ( R2S(GetLocationX(nub)) + ( ",Y" + R2S(GetLocationY(nub)) ) ) ) )
    endif
    return nub
endfunction
少量运行还正常  短时间运行多次 貌似会无法返回正确的点
用消息看 该点  x=0.00... y=0.00
代码里没有"等待"的动作
另外附加:如果一个全局点变量不清理就赋值 会泄露么
总结
症结:问题是一个点不能多次引用的问题 只能创建新点.... |
|