问题标签 [unity3d-gui]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
445 浏览

unity3d - Unity3D 将按键事件转换为纯文本

我正在为我的游戏实现一个虚拟控制台,我正在通过一个事件管道(可观察的主题)管道键事件,并在虚拟控制台端处理它们

虽然这适用于简单的 AZ 和 az 字母,但当您获取数字和其他字符时,我将获得原始键名,例如“Alpha1”表示“Q”键上方的水平“1”键,“Alpha2”表示“W”上方的“2”等

有没有一种方法可以轻松地从键事件中获取“渲染”文本,而无需构建所有可能的键码结果的切换?

PS:我忘了说,shift+Alpha1是“!” 在美国 Querty 中,shift+Alpha2 为“@”等,但不同国家的键盘会有所不同,对世界上每个键盘都做 switch 语句是不可行的。

0 投票
0 回答
840 浏览

unity3d - 如何将后期处理效果应用于 UI 元素

我有一个后期处理效果,它使用 Unity对场景Graphics.Blit进行像素化或应用效果。crt-screen有一些 UI 元素在事后显示(基本上使它不是真正的后期处理,但让我们暂时搁置一下)。

现在,我想应用第二个进程来执行屏幕擦除并将一个场景转换为另一个场景。这次我想在效果中包含 UI 按钮。

我已经研究过使用渲染纹理,然后渲染到第二台相机,但我觉得有一种更智能/更准确的方法来处理这个问题。

这个问题的第一个版本:

我可以选择性地将screenspace-overlayUI 包含在应用后期处理的脚本中吗?

或者,这个问题的第二个版本

当重新渲染到第二台相机时,是否有一个技巧可以让渲染纹理保持分辨率并准确显示(即:不损失质量)?

0 投票
0 回答
1134 浏览

unity3d-gui - 播放动画时布局不更新

我有一个带有 AnimatorController 的 ui 面板。该面板包含一个带有 AspectRatioFitter 组件(unity ui 系统附带的组件)的图像。纵横比 fitter 设置为“Fit In Parent”,因此有一个名为“Aspect Ratio”的公共浮点变量来控制纵横比。

动画控制器启动一个随着时间改变“纵横比”值的动画。

问题是矩形变换的大小没有根据新的纵横比更新。不是在动画期间,也不是在动​​画结束时。它从不应用新值。

如果我手动更改值,或者如果我禁用然后手动启用 AspectRatioFitter 组件,我可以看到它工作。

出于测试目的,我尝试在 GameObject 上的 Update() 方法中调用以下内容。但它不会更新方面:

那么为什么布局没有更新呢?我该如何解决这个问题?

0 投票
2 回答
1008 浏览

button - Unity 5 NGUI 突出显示 Sprite 按钮脚本问题

我目前正在使用 Unity 5 GUI 系统并且在突出显示 Sprite 按钮脚本时遇到了一个问题。在 Button Script / Sprite Swap / Highlighted Sprite 下,我可以让突出显示的 sprite 保持突出显示,但是一旦我在按钮外部单击,它就会恢复正常或突出显示状态消失。

我想让突出显示的按钮保持打开状态,以便最终用户知道他们在哪个场景中。

在按下另一个按钮之前,如何保持突出显示状态?

0 投票
1 回答
605 浏览

unity3d - 由同级索引引起的 ugui 绘制调用

UGUI 深度按兄弟索引排序有什么问题?我看不到任何改进,但只有缺点

例如,我有一个使用多个对象的 scrollRect 游戏。我的对象有一些图像和一些文字。如果您按以下方式订购它们:

-内容

-目的

-图片

-文本

-图片

-文本

-图片

-文字...等

您将为每个对象获得 6 个 drawCall。对于使用相同字体和相同图像的 10 个对象,您将有 60 个 DRAW CALLS!

好的,你可以如下优化它们

-内容

-目的

-图片

-图片

-图片

-文本

-文本

-文本

...ETC

对于每个对象,您将拥有一批 3 个图像和一批 3 个文本。但是您仍然会为每个对象获得 2 个绘制调用,因此 20 个绘制调用对应 10 个相同的对象。

想象一下,你有 5 个不同的滚动视图,里面有对象(就像我一样),有 5 个可见的对象,每个对象都比图像组件和文本组件复杂一点。事实上,我有以下层次结构。

-目的

-文本(1次抽奖)

-图片

- 图像(1 个绘图调用 - 与上面的一个批处理)

-文本(1次抽奖)

-图片(1次抽奖)

-文本(1次抽奖)

-图片(1次抽奖)

-文本(1次抽奖)

我不能修改层次结构,因为有些图像是按钮,为了保持它们的文本清晰并以每个纵横比为中心,它们需要成为按钮的子元素并锚定到它们。我的对象生成 7 个绘图调用,并且在 5 个不同的滚动视图上有 5 个可见对象使我达到 7 * 25 = 175 个绘图调用。

现在,使用基于 z 的深度,我们将只有 2 个绘制调用。因此我的问题出现了,这种方法有什么问题?为什么Unity会这样做?这是否有积极的结果,我太盲目了,看不到它?

0 投票
2 回答
251 浏览

c# - Unity3D脚本timeSinceLevelLoad变量不返回c#

我正在设计我的第一个游戏,我正在尝试以 5 秒的步长创建一个时间变量(比如比实时慢 5 倍)。

这是我拥有 GUI 的地方(仅粘贴相关部分):

这是计算我的游戏时间的地方:

我没有收到任何错误,但游戏时间的值始终为 0。这以前有效,但不再有效,我不知道为什么。有什么提示吗?

0 投票
2 回答
1224 浏览

image - Unity 新 UI:GUI.DrawTexture ScaleAndCrop 等效

我想用 Unity (2D) 实现一个图片库。我在Canvas逻辑上划分为 100x100 单位的正方形。然后:

  • 每个“正方形”都由从 Internet 动态下载的图像填充(使用 www 类);
  • 图像不一定是正方形:在这种情况下,我想“缩放和裁剪图像”:保留纵横比并且图像填充整个正方形;
  • 当用户点击一个正方形时,图像会在屏幕中间展开到其自然大小。再次单击图像将返回正方形大小/位置;
  • 每隔一段时间,随机取一个正方形并将其图像替换为新图像。

我是 Unity 新手,我已经尝试了很多不同的方法。我真正的问题是规模和作物。的确:

  • 需要Gui.DrawTexture()一个参数scaleMode.ScaleAndCrop,这正是我所需要的。但这是旧 UI 系统的一部分......
  • 新的 UI 提供ImageRawImageGui 组件,但开箱即用,我们可以保持纵横比或填充正方形,而不是两者兼而有之。
  • 我试图通过将正方形像素复制到新纹理中来创建“纹理缩略图”。它可以工作,但缩略图和全尺寸图像之间的动画不再可能......

我确信有一种方法可以使用新的 UI 功能获得缩放和裁剪效果,但我不知道如何。有人可以给我一个建议吗?

0 投票
1 回答
623 浏览

unity3d - Unity3d 中的完美方形按钮

我正在尝试为我的移动项目创建一个灵活的菜单,但我在使用新的 UI 系统时遇到了问题。我可以用代码做到这一点,但我想知道是否可以不编码。

这是我想要做的:http: //i.imgur.com/33yMRgV.jpg

基本上,我想要一个高度为屏幕总高度 %10 的菜单区域。因此,例如,如果它是高清设备,我希望图像中红色区域的高度为 192 像素(1920/10)。我可以轻松做到这一点,但我也希望在右上角对齐 192x192 按钮。我可以将高度设置为父级,使其也变为 192,但我无法将宽度设置为高度。我可以使用 ratio fitter 使它们成为正方形,但我不能将它们并排放置。

所以基本上我只想将元素的宽度设置为它的高度并将它们并排放置而不编码。可能吗?

谢谢

0 投票
3 回答
10378 浏览

c# - 如何在 Unity 中使用 UI.Text 作为预制件?

我试过用这个

它成功地创建了对象,如我的层次结构所示。但我看不到屏幕上的文字,即使有分配给它的文字。我只能在屏幕上看到一个空的游戏对象。

这些屏幕截图显示了正在玩的游戏,所选对象是通过脚本实例化的对象。

在此处输入图像描述

在此处输入图像描述

当我拖动预制件时,它不会在场景中显示任何内容。这发生在我所有的预制件上。以下是它的组成部分:

在此处输入图像描述

0 投票
1 回答
86 浏览

unity3d - 统一3D。图像在我自己​​的“聊天框”中不可见,但仅在“播放”模式下

我想创建一个聊天框。消息应该有边框。消息也可以位于两侧之一,我的意思是右侧或左侧。我制作了两个预制件,一个用于左侧消息,另一个用于右侧消息。当我在聊天框中添加一些预制件时,它工作正常,我可以看到边框。但是当我按脚本执行时,边框是不可见的。这是结构。 在此处输入图像描述

“内容”具有选中宽度的垂直布局组组件,以及具有水平适合 - 不受约束和垂直适合 - 首选大小的内容大小调整器。

“留下的消息”具有未选中宽度和高度的水平布局组,以及所有未选中的布局元素。

“消息 (1)”具有水平适合 - 无约束和垂直适合 - 首选大小的内容大小调整器、宽度选中的水平布局组和首选宽度 - 291.5 和灵活宽度 - 0 的布局元素。

这里还有两个图像,有边框和无边框。

在此处输入图像描述 在此处输入图像描述

更新:边框在“消息(1)”上,看起来像在此处输入图像描述

那么我该如何解决呢?有解决办法吗?

UPDATE2:我已经修好了。问题在于精灵的 Z 缩放,我将其设置为 0,但它必须为 1。