【问题标题】:Instantiate dynamic text in Unity [duplicate]在Unity中实例化动态文本[重复]
【发布时间】:2018-05-14 15:26:09
【问题描述】:

当我在游戏中收集道具时,我想在道具的位置实例化动态文本(例如“导弹”或“盾牌”),但我的代码不起作用。

这是我的功能(我承认有点乱):

public Text upgradeTxtPrefab;

void ShowUpgradeTxt (string _upgradeTxt) {

        // find canvas
        GameObject canvas = GameObject.Find("Canvas");

        Text tempUpgradeTxt = (Text)Instantiate (upgradeTxtPrefab);

        tempUpgradeTxt.fontSize = 24;

        tempUpgradeTxt.transform.position = this.transform.position;

        tempUpgradeTxt.transform.SetParent (canvas.transform, false);

        upgradeTxtPrefab.text = _upgradeTxt;

}

【问题讨论】:

  • “不起作用”到底是什么意思?
  • 文本不显示。
  • 所以没有创建游戏对象?文字没有改变?请具体
  • 游戏对象已创建,但我在屏幕上看不到文字。

标签: c# unity3d text


【解决方案1】:

您似乎没有设置正确的文本。您正在为 upgradeTxtPrefab 设置文本,但您实例化了 tempUpgradeTxt

应该是tempUpgradeTxt.text = _upgradeTxt;

【讨论】:

  • 我按你说的改了,但还是看不到文字。
  • 在运行时创建Text对象时,在inspector中查看是否文本字段包含文本?
  • 好的。文字在那里。位置好像有问题。在检查器中,它显示 x = -563 和 y = -906。它们不在可见屏幕上。我该如何解决这个问题?
  • 也许尝试将位置设置为等于画布的位置,看看它放在哪里?我还将删除您要更改预制件位置的行。
  • 我删除了两个带有位置的代码行并更新了我的代码。位置还是很奇怪,不知道是什么原因造成的。
猜你喜欢
  • 2016-04-01
  • 1970-01-01
  • 2014-01-04
  • 1970-01-01
  • 1970-01-01
  • 2011-11-27
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
相关资源
最近更新 更多