【问题标题】:Unity - UI Mobile - Script Generated buttons/text not seen?Unity - UI Mobile - 脚本生成的按钮/文本看不到?
【发布时间】:2015-07-20 15:01:04
【问题描述】:

我正在尝试使用 Unity 5.0 动态生成一些按钮和文本 我所有的代码似乎都是正确的。当我在编辑器中播放它时,它看起来很棒。一切都是按照我第一次运行的需要生成、放置和调整大小的。我做了apk。将它安装到我的手机上没有任何问题。
打开东西后,我看到了我的静态 Canvas 对象,但我的动态却无处可去。为了确定,我把它们弄得很大。

详情: 统一 5.0。我在手机上为 Android 5 设置了构建设置。我试过 Android 4.6。

我的 Canvas UI 缩放模式现在设置为随屏幕大小缩放。 根据三星网站上的规格表,我的预览设置为 WXGA Portrait 800 x 1280,这是我的 One Note 4 的分辨率。 画布参考分辨率为 X 800 Y 1280。 所有静态和动态对象都是 Canvas 的子对象

我错过了什么?我觉得这是我忽略的某个选择。

【问题讨论】:

  • 字体嵌入问题?你用的是默认字体吗?
  • 今天下午我会知道的。我记得以前遇到过这样的问题。 Android 不支持动态字体或其他东西,但我无法找到有关处理此问题的可靠信息,甚至无法找到正确的定义。 Unity 不会覆盖字体并手动处理它吗? NGUI 会吗?
  • 我使用的是默认字体 Arial。

标签: android user-interface unity3d


【解决方案1】:

我使用以下代码完成了这个(生成动态按钮)

GameObject obj = Instantiate<GameObject>(btn_prefab);
obj.transform.SetParent(parent);

float itemXPosition = normalizedItemCenter + (normalizedItemWidth * index);

obj.GetComponent<RectTransform>().anchorMin = new Vector2(itemXPosition, 0.0f);
obj.GetComponent<RectTransform>().anchorMax = new Vector2(itemXPosition, 1.0f);
obj.GetComponent<RectTransform>().anchoredPosition = Vector2.zero;
obj.GetComponent<RectTransform>().sizeDelta.Set(size.x, size.y);

这里

  • btn_prefab 是我正在创建的按钮的预制件。
  • parent 是我想要按钮的父 RectTransform 对象。
  • normalizedItemCenternormalizedItemWidth 是按钮的中心和宽度,范围为 0.0 到 1.0
  • index 是正在生成的按钮数量(我在一个循环中生成多个按钮)
  • size.xsize.y 分别计算按钮的宽度和高度

注意:所有这些都是在为按钮分配父级之后完成的。这是一个常见的错误,开发人员首先使用游戏对象的变换,然后为它们分配一个父对象(在某些情况下应该这样做并且也很有用),但在这种情况下,他们会像你一样非常取笑和沮丧没有得到你想要的结果,也很难找到问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-17
    相关资源
    最近更新 更多