实例化对象出现在层次结构中但不在场景中

Posted

技术标签:

【中文标题】实例化对象出现在层次结构中但不在场景中【英文标题】:Instantiated object appears in hierarchy but not on scene 【发布时间】:2021-06-10 20:29:42 【问题描述】:

我在 Unity 中实例化游戏对象时遇到问题。所以游戏是2D的,这段代码是为了我的对撞机命中的。它的一部分负责在射线击中对撞机的位置实例化一个对象。确实如此,当我运行游戏并且射线击中对撞机时,instatiated 对象出现在层次结构中,但在场景和调试中不可见,tmpCircle 的值为 null,这是代码:

if (result.collider.CompareTag("Images"))
                                    
                    Debug.Log("Hit");
                    result.collider.enabled = false;                    
                    GameObject tmpCircle = GameObject.Instantiate(OrgCircle, result.point, Quaternion.identity);
                    tmpCircle.SetActive(true);   
                    tmpCircle.transform.position = new Vector3(result.point.x, result.point.y, result.point.z);
                    CircleAnimation.Play("CircleAnim");
                    score += 1;
                    differences -= 1;
                    coins += 1;
                    score1.text = " " + score;
                    object.Play();
                

【问题讨论】:

您在 OrgCircle 中有 smg 吗?它的类型是什么?位置行是多余的,因为它与 Instantiate.. 相同。 对不起,我对 Unity 很陌生,smg 是什么?至于职位,是的,我知道,我在发布此消息后意识到这一点。 我的错,smg = 某事。 OrgCircle 有预制件吗?我猜你在检查器中拖了一个预制件。 我已经尝试了这两个选项,拖入检查器并使用 GameObject.Find,我只是无法弄清楚值是什么 请不要回答这个问题。我已回滚/编辑您的问题并删除了答案。仅在答案部分添加答案。 【参考方案1】:

也许从 2D 开始,sprite 组件就在其他 sprite 后面绘制。尝试增加 z 索引。或者您的预制件中未启用精灵渲染器组件。检查精灵的比例。

【讨论】:

嗯,它不是精灵,而是带有动画的图像,是的,我尝试在 -100 到 100 的范围内增加和减少 z 索引,但不起作用。我无法弄清楚为什么在调试中克隆对象的值为空

以上是关于实例化对象出现在层次结构中但不在场景中的主要内容,如果未能解决你的问题,请参考以下文章

如何通过应用程序委托使用托管对象上下文实例化还原的视图控制器?

如何在运行时控制实例化的预制件作为孩子

当前线程不在单线程单元中,因此无法实例化 ActiveX 控件

unity3d中间获取不在场景中的物体的组件

类中调用界面ActiveX控件报错当前线程不在单线程单元中因此无法实例化 ActiveX 控件的解决办法

python的类定义与实例化