现在我面对一个幽灵物体。
我删除了一个附加到对象的脚本。但由于某种原因,脚本的更新功能总是被调用。
我将此行添加到更新:Debug.Log(name)
,其名称为Flamestrike
,但是当我在层次结构中搜索它时,没有结果。
如果我将其位置设置为0,1,0
(因此它应该可见),它在游戏中也不可见。
所以请帮助我,因为它让我发疯:(
修改
Debug.Log("a");
if(transform.parent == null) {
transform.SetParent(GameObject.Find("Canvas").transform);
Debug.Log("Canvas");
}
我也试过这个,它打印Canvas,所以它将其父设置为Canvas ,但我无法在Canvas下看到任何Flamestrike对象。 / p>
答案 0 :(得分:0)
实例化预制GameObject时,出于某种原因,它是使用隐藏标志创建的。为了解决这个问题,我们添加了代码:this.gameObject.hideFlag = HideFlags.None;
,它允许对象最终显示在层次结构中。
我能找到的唯一其他来源是这个答案,基本上没有解释它为什么会出现。 http://answers.unity3d.com/questions/921819/instantiated-prefabs-not-showing-up-in-hierarchy.html(引自下文)
发现问题,不知道为什么但是:这两种方式都有效(预制 是其他地方定义的GameObject。
Player1 = Instantiate(prefab) as GameObject;
Instantiate(prefab) as GameObject;
由于某种原因原型:
Instantiate(prefabName, position, rotation);
不工作。
答案 1 :(得分:0)
(对不起,如果这不是正确的写法,但评论太短,无法格式化)
我认为这不完全正确。
这个隐藏的gameObject不是通过脚本创建的。我把预制件拖到了现场,然后不知怎的,我没有完全删除预制件。 (或者甚至没有删除,只是把它隐藏起来)
它在hieararchy中消失了,但没有完全删除。 在我们通过脚本显示对象后,现在它是可见的。 (但仅限于播放模式,因此我无法删除它,因为它在场景视图中不可见)
它有一些有趣的组件/属性。 原始故事:
FlameStrike - 用于缩放目的的容器(空游戏对象)
-FlameStrike - 一个带动画的游戏对象,FlameStrike.cs脚本等。
- 粒子系统 - 一个部分。具有这个确切名称的系统。
所以我不明白我做了什么。它删除了预制件的某些部分,但也混合了一些部件,
(比如将粒子系统对象的粒子系统组件添加到此FlameStrike对象中)
然后将其隐藏起来。这有热门吗? :D因为它不是与脚本相关的问题,所以我在编辑器中这样做了。