【问题标题】:Instantiated 2D text doesn't show up in UnityUnity 中不显示实例化的 2D 文本
【发布时间】:2018-08-12 19:02:05
【问题描述】:

如有任何语法错误,请见谅。 (我知道这里有很多这样的问题,但我还没有找到解决方案。

我正在尝试使用 2d 文本实例化 2d 对象,这里的问题是文本在实例化时是不可见的。是的,我知道我必须将画布设置为它的父级,但它仍然无法正常工作...... 代码:

Instantiate(levelAsteroid, new Vector3(-7, 2.25f, 0), Quaternion.identity, 
GameObject.FindGameObjectWithTag ("Canvas").transform);

Unity层次结构,当对象实例化时:

画布设置:

更新: 我想我找到了问题所在。 如果我只是实例化对象,它可以正常工作,文本是可见的,但是如果我尝试从脚本中更改文本,文本就会损坏,之后即使我放置对象,文本也不会出现手动在画布中。

已修复: 问题似乎是我用来更改文本的方式.. 以前,我用来实例化对象并从附加到 GameController 的脚本中更改文本,现在我从附加到以文本为子对象的对象的脚本中更改文本。

之前: (附在 GameController 上的脚本):

public GameObject exampleOfObj;
void instantiateObj(){
        object = Instantiate(exampleOfObj, new Vector3(-800, 300f, 0), Quaternion.identity);
        object.transform.SetParent (GameObject.FindGameObjectWithTag ("Canvas").transform, false);
        objectText.SetText ("Text: " + value);
}

我只是删除了对“SetText”方法的调用,并将其放入附加到我正在实例化的对象的脚本中。 我找到了解决方案,但我不明白为什么会出现问题。

【问题讨论】:

  • 只需将false传递给实例化函数
  • 我已经完成了,但没有任何改变......而且这个问题不是重复的
  • 您的 Text 对象上是否有任何 Animator 组件?

标签: c# unity3d 2d instantiation


【解决方案1】:

如果没有其他信息,很难找出您的问题。可能的解决方案是使用 Transform.SetParent 方法,将 worldPositionStays 参数设置为 false,而不是在父变换上实例化。您可以在Unity Documentation 中找到类似问题的疑难解答。请参阅实例化 UI 元素部分。

【讨论】:

  • 是的,我是这么想的,但它是一样的..我可以给你哪些额外的信息?
【解决方案2】:

我做的和你做的一模一样,它正在显示文本。我的画布设置是:

渲染模式:缩放空间 - 相机(附加相机) UI 缩放模式:随屏幕大小缩放 参考分辨率:1920 x 1440 匹配 = 0.5

还要确保当您手动将对象放入画布时,它也会显示文本。

【讨论】:

  • 我真的很困惑...当我创建预制时,文本显示没有任何问题:i.imgur.com/2CK45vR.png 当我将其保存为预制时,它仍然可以正常工作,如果我将预制件手动放在画布中它工作正常但是当我从脚本实例化它时,它第一次工作正常,在第一次预制件像损坏后,文本不再显示,即使我把它在画布中手动..没有意义..
  • 如果我只是实例化对象,它工作正常,文本可见,但如果我尝试从脚本更改文本,文本会损坏,之后文本将永远不会显示即使我手动将对象放在画布中也不会。
  • imgur.com/a/BRDFCNZ 这是我的代码(与您的代码相同)它连接到相机并且工作正常,当我按下 u 时,它正在更改文本没有任何问题。可能您遗漏了一件小事,但很高兴您解决了问题。
猜你喜欢
  • 1970-01-01
  • 2014-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-15
  • 2020-09-20
相关资源
最近更新 更多