【问题标题】:trouble instantiating an object and changing its layer实例化对象和更改其层的麻烦
【发布时间】:2016-07-17 19:58:43
【问题描述】:

我尝试了以下步骤;

1.- 获取我要实例化的游戏对象

public GameObject Arrow

2.- 以另一个 GameObject 作为参考来生成它

public GameObject A

3.- 然后,在我的代码中,使用生成的 GameObject 坐标和旋转实例化它

Instantiate (Arrow,  A.transform.position, A.transform.rotation);

4.- 最后更改实例化游戏对象的层以匹配生成游戏对象的层

Arrow.layer = A.layer;

我将相同的脚本附加到几个游戏对象上,生成点是公共的,它是可互换的,我可以在我准备的几个具有不同位置和层的它们之间进行选择。

这样做的结果是所有实例化的对象都在同一个点产生并且具有错误的层。他们取而代之的是上面的一层,例如:应该有 B 层的一层现在有 A 层, 另一个应该有 C 层的现在有 B 层。

我是不是做错了什么,我所做的和我认为的一样吗?

【问题讨论】:

  • 有些东西看起来很奇怪 - 变量“arrow”必须是“arrow”,而不是“Arrow”。您必须展示整个实际代码才能获得帮助!
  • 你能贴一些代码吗?
  • 请显示所有相关代码。

标签: c# unity3d instantiation layer gameobject


【解决方案1】:

如果你想要一个对 Instantiate GameObject 的引用,你必须将它分配给一个变量,像这样:

GameObject _oMyNewInstance = (GameObject) Instantiate (Arrow,  A.transform.position, A.transform.rotation);

那么你就可以使用该变量来分配图层并做其他事情了:

_oMyNewInstance.layer = A.layer;

声明Arrow.layer = A.layer;更改预制/游戏对象模板的层(这就是为什么你的obj B有A层而obj C有B层的原因)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多