Faj*_*raa 6 user-interface screen-resolution unity-game-engine
我希望我的 UI 在用户仍在调整游戏大小时(在窗口边框中保持单击)不调整大小,并且只有当用户松开鼠标时才会触发调整大小事件。
我试图在 Unity 上实现它,但到目前为止我只能检测到窗口大小的变化,我的脚本每 0.5 秒检查一次,如果检测到变化,它将调整 UI 的大小。但是当然调整所有内容会导致严重滞后,因此每 0.5 秒调整大小不是一个好的选择,但每 1 秒调整大小也不是一个好主意,因为 1 秒被认为太长了。
问题可能太宽泛,但我已将问题指定为尽可能小,如何检测用户是否仍在调整窗口大小?以及如何检测用户是否已停止调整窗口大小(停止在窗口边框处单击)?
您无法判断某人何时停止拖动窗口,除非您想为所有桌面环境和每个操作系统编写低级解决方案。
MonoBehavior以下是使用该OnRectTransformDimensionsChange事件对我的任何课程都有效的方法:
public class StackOverflow : MonoBehaviour
{
private const float TimeBetweenScreenChangeCalculations = 0.5f;
private float _lastScreenChangeCalculationTime = 0;
private void Awake()
{
_lastScreenChangeCalculationTime = Time.time;
}
private void OnRectTransformDimensionsChange()
{
if (Time.time - _lastScreenChangeCalculationTime < TimeBetweenScreenChangeCalculations)
return;
_lastScreenChangeCalculationTime = Time.time;
Debug.Log($"Window dimensions changed to {Screen.width}x{Screen.height}");
}
}
Run Code Online (Sandbox Code Playgroud)
Fat*_*tie -1
我有一些好消息——算是吧。
当用户在 Mac 或 PC 上调整窗口大小时,
Unity 将自动重新布局所有内容。
但实际上仅当用户“完成”调整 Mac/PC 窗口大小时。
我相信这就是 OP 所要求的 - 所以好消息是,OP 的要求是非常自动的。
然而。Unity 中的一个大问题是,当用户拖动鼠标扩展 Mac/PC 窗口时,Unity 无法平滑地调整元素大小。
我从来没有找到解决这个问题的办法。(经常提到的一个糟糕的解决方案是检查每帧窗口的大小;这似乎是唯一的方法。)
再次有趣的是,OP提到的
“……如果窗口停止调整大小……”
在 Unity 中自动完成;事实上,没有采取任何措施来实现这一目标。
| 归档时间: |
|
| 查看次数: |
2468 次 |
| 最近记录: |