如何在 Roblox Studio 中获取缩放图像/框架的渲染/显示大小

我需要获取框架中图像的宽度和高度。框架和图像都使用 Scale 属性而不是 Offset 属性来设置大小。我在图像所在的框架上使用了 UIAspectRatioConstraint。一切都可以根据屏幕大小进行缩放。

然而,我需要能够获取图像(或框架)的当前宽度/高度,以便我可以执行一些数学函数,以将标记移动到图像的特定位置(X,Y)。我无法获取图像/框架的大小,因此无法更新位置。

有没有一种方法可以获取使用 Scale 大小选项和 UIAspectRatioConstraint 的图像或框架的当前渲染宽度?

我困了。希望这是有意义的......

我目前用于计算其他使用 Offset 而不是 Size 的图像上的位置的数学公式是:

local _x = (_miniMapImageSize.X.Offset / _worldCenterSize.X) * (_playerPos.X - _worldCenterPos.X) + (_miniMapFrameSize.X.Offset / 2)
local _y = (_miniMapImageSize.Y.Offset / _worldCenterSize.Z) * (_playerPos.Z - _worldCenterPos.Z) + (_miniMapFrameSize.Y.Offset / 2)

这为我提供了在小地图上的玩家位置。但是这不是可伸缩的。实际地图确实可以,我也需要在地图上定位玩家的标记。

解决方案

现在(对于其他人寻找解决方案的人),我已经创建了一个解决方案。现在我指定我的实际图像大小:

local _mapSize = Vector2.new(814, 659)

然后,我使用屏幕宽度和高度来决定我是否需要根据 x 轴或 y 轴进行缩放。(缩放我的数学公式,而不是图像。)

if (_mouse.ViewSizeX / _mouse.ViewSizeY) - (_mapSize.X / _mapSize.Y) <= 0  then
    -- 如果屏幕的宽度与屏幕的高度相同或较小的比率,则基于宽度计算新的大小
    local _smallerByPercent = (_mouse.ViewSizeX * 0.9) / _mapSize.X

    _mapWidth = _mapSize.X * _smallerByPercent
    mapHeight = _mapSize.Y * _smallerByPercent
else
    local _smallerByPercent = (_mouse.ViewSizeY * 0.9) / _mapSize.Y

    _mapWidth = _mapSize.X * _smallerByPercent
    _mapHeight = _mapSize.Y * _smallerByPercent
end

之后,我可以在我的地图上创建标记的位置。

_x = ((_mapWidth / _worldCenterSize.X) * (_playerPos.X - _worldCenterPos.X)) * -1
_y = ((_mapHeight / _worldCenterSize.Z) * (_playerPos.Z - _worldCenterPos.Z)) * -1

_mapCharacterArrow.Position = UDim2.new(0.5, _x, 0.5, _y)

现在,我的标记能够被放置在我的角色在按下“M”时打开的更大地图内。

然而

我仍然希望知道一种获取渲染/显示图像大小的方法......我正在尝试使其不必手动将图像大小输入到脚本中。我希望它是动态的。

点赞
用户733876
用户733876

所以似乎大多数 GUI 元素都有一个叫做 AbsoluteSize 的属性。这是元素的实际显示大小,不管它被缩放到什么程度。(不是说缩放时它保持相同,而是随着缩放而改变,以给出新的大小。)

有了这个,我可以重新编写我的代码:

local _x = (_mapImageSize.X / _worldCenterSize.X) * (_playerPos.X - _worldCenterPos.X) * -1
local _y = (_mapImageSize.Y / _worldCenterSize.Z) * (_playerPos.Z - _worldCenterPos.Z) * -1

_mapCharacterArrow.Position = UDim2.new(0.5, _x, 0.5, _y)

其中 _mapImageSize = [我的地图图片].AbsoluteSize

比之前好多了。

2018-04-17 13:52:49