在脚本中创建对象后,Unity GameObject位置z会神秘地更改

时间:2016-02-11 15:00:55

标签: c# position scrollview unity5 gameobject

我再次遇到Unity的问题。由于我正在处理的游戏中的保密协议级别,我无法使用大量代码,但在运行代码时遇到了这个令人讨厌的问题。

所以,当我在游戏中输入某个视图时,我会在运行时创建GameObjects。我为我们的游戏故事创建了一个所谓的Reader,它从数据库中读取文本,将其拆分为段落,围绕该paraghraph文本创建GameObject(设置文本组件等),然后将GameObject及其文本添加到故事面板中将所有对象显示为蒙版面板内的可滚动视图。

希望你能跟上我的解释:D

一切都很好,直到段落正确地出现在父对象(文本的视图面板)下面,并在场景视图中正确显示,但是...问题是,虽然我在更新循环中进行了几次检查,Unity只是一直给游戏对象设置随机z位置 position z = -350

这使得他们脱离了玩家视角并且很难阅读:D

我已经多次调试GameObjects在更新中的位置,在每一帧中将z位置0给出。这显然没有在运行时期间编辑器视图中的对象具有的价值......

有没有人遇到过这种问题?

PS。我已经决定关闭并打开Unity,重新加载,没有任何作用。

哦,还有一点需要提及的是,为了适应文本内容的大小和父面板宽度,我将这些作为示例使用: "Unity UI Tutorial - How to make a scrollable list" by rachetandclank3

2 个答案:

答案 0 :(得分:2)

嗯......当我改变这个问题时,我设法解决了这个问题:

this.paragraphObject.transform.localPosition.Set(
    this.paragraphObject.transform.position.x,
    this.paragraphObject.transform.position.y,0f);

改为使用它:

Vector3 newPosition = new Vector3(
   this.paragraphObject.transform.position.x,
   this.paragraphObject.transform.position.y, 0f);

this.paragraphObject.transform.localPosition = newPosition;
希望这可以帮助那些也在努力解决这类问题的人。

解决方案的来源:GameObject position.Set() not working

答案 1 :(得分:0)

在位置的Vector3中的

尝试使用gameObject.transform.position.z

进行更改
  

将gameObject替换为神秘改变位置的对象名称。