xml - Unity UI Builder Vector3 缩放问题
问题描述
所以在过去的几天里,我一直在尝试新的 Unity UI Builder,我遇到了以下问题:每当您简单地将 Vector3 字段添加到 uxml 并运行游戏时,Vector3 字段的缩放比例不正确。在编辑器中,它看起来像任何 Vector3 字段,就像 Unity 编辑器本身一样。下面是一个示例图像和 uxml。
<ui:UXML xmlns:ui="UnityEngine.UIElements" xmlns:uie="UnityEditor.UIElements">
<ui:VisualElement style="flex-grow: 1; position: absolute; height: 100%; width: 100%; justify-content: center; align-items: flex-start;">
<ui:VisualElement>
<uie:Vector3Field label="Vec3 Field" />
</ui:VisualElement>
</ui:VisualElement>
</ui:UXML>
我已经搞砸了构建器中呈现给我的每个字段,但没有任何成功。我可以取消 Vector3 字段并创建自己的字段,但这需要更多时间,因为我需要更深入地研究源代码。我希望有人可以帮助我。如果问题似乎很常见,我会将其报告给 Unity 开发人员。
提前致谢!
解决方案
如果您UnityEditor.*
在 uxml 中看到任何地方,请注意此面板在统一编辑器之外无法工作(构建时例外)。由于UnityEditor.UIElements.Vector3Field
是特定于编辑器的 - 它需要用其他东西代替。
到目前为止,我对此的解决方案是:
- 只需使用
UnityEngine.UIElements.Label
(x1 或 x3) - 使用
UnityEngine.UIElements.Slider
x 3(需要输入时)+EventSystem
字段Event Generation
设置为IMGUI Events
- 或者 - 我自己的继承自 VisualElement 的自定义类来处理这种情况
PS:UIElements 仍在开发中,所以这可能会改变。
推荐阅读
- python - Pandas:如何仅删除列末尾的最后一个连字符
- google-forms - 如何根据其他用户过去的回复使 Google 表单自动填充?
- c - 我知道一个地址,但我应该如何判断在哪个部分?使用C的全局区域或堆区域或堆栈区域
- json - 如何解决“手势 RangeError(索引)捕获的异常:无效值:有效值范围为空:0”
- c++ - 什么会使多边形算法中的点仅在正向和反向运行时才能正常工作?
- php - PHP:如何使用键->值对每两个分隔符将一个字符串分解为一个数组
- kubernetes - 将 GKE 集群拆除为“全新”状态而不删除它?
- scala - Spark——自定义reduce函数保存到磁盘然后上传到s3
- javascript - XMLHttpRequest 返回事件对象而不是实际数据
- fortran - Fortran 将未知大小的文件读入数组