如何在 Roblox Studio 中获取缩放图像/框架的渲染/显示大小
2018-4-13 4:12:2
收藏:0
阅读:143
评论:1
我需要获取框架中图像的宽度和高度。框架和图像都使用 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”时打开的更大地图内。
然而
我仍然希望知道一种获取渲染/显示图像大小的方法......我正在尝试使其不必手动将图像大小输入到脚本中。我希望它是动态的。
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

所以似乎大多数 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。比之前好多了。