Unity3D C#-获取脚本类型

Unity3D C#-获取脚本类型,c#,unity3d,C#,Unity3d,因此,我创建了一个放置系统,用于将对象放置在网格上,我的网格和放置都有效,我的问题是我试图创建一个“幽灵”对象,它在我放置时存在,但实际上什么都不做,我的问题是我试图找出一种方法来销毁/停用任何和所有“脚本”附加到幽灵对象的任何子对象,因此它们都不起作用。但我搞不清楚是什么系统。键入脚本。有人知道吗?请拨打: gameobject.GetComponents(typeof(Component)); 这将返回所有组件。注意默认的Unity组件:变换、网格。。。如果需要,可以使用is或IsInst

因此,我创建了一个放置系统,用于将对象放置在网格上,我的网格和放置都有效,我的问题是我试图创建一个“幽灵”对象,它在我放置时存在,但实际上什么都不做,我的问题是我试图找出一种方法来销毁/停用任何和所有“脚本”附加到幽灵对象的任何子对象,因此它们都不起作用。但我搞不清楚是什么系统。键入脚本。有人知道吗?

请拨打:

gameobject.GetComponents(typeof(Component));

这将返回所有组件。注意默认的Unity组件:变换、网格。。。如果需要,可以使用is或IsInstanceOfType或component.GetType()确定用于强制转换组件对象的类型。

使用
gameobject.GetComponent(typeof(component))
将返回附加到该游戏对象的所有组件,但不会返回子对象的所有组件。但是,有一种方法可以获取所有子用户的所有组件
gameObject.GetComponentsInChildren(typeof(Component))
,但我不建议使用
组件
,相反,您应该使用
单行为
使用此类型,您将只获得直接从
单行为
派生的组件,这些组件也包括您的脚本。之后,您可以检查(dot),因为几乎所有Unity的内置组件都位于命名空间
UnityEngine
中。而
Object.GetType()
将返回以下格式的类型
namespace.ObjectType

这里,如果您检查(点)的索引,如果给定类型包括(点)它将返回其位置。如果字符串中不存在(点),它将返回
-1
。检查
-1
我们可以确保组件不在任何名称空间中,并且可以安全地销毁。我希望你明白了我想说的,如果没有,只要看看下面的代码片段,你就会明白了

Component[] c = ghost.GetComponentsInChildren(typeof(MonoBehaviour));
     foreach(Component cmp in c)
     {
         if(cmp.GetType().ToString().IndexOf('.') <= -1)
         {
             Destroy(cmp);
         }
     }
Component[]c=ghost.GetComponentsInChildren(typeof(monobhavior));
foreach(c中的组件cmp)
{
if(cmp.GetType().ToString().IndexOf('.'))