unity3d 如何把gameobject上的脚本删除

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3d 如何把gameobject上的脚本删除相关的知识,希望对你有一定的参考价值。

1,首先打开自己的unity3d场景。

2,接着在场景中创建一个基本的模型物体。

3,给物体添加一个刚体Rigidbody属性。

4,创建两个脚本Add_script与Force脚本。

5,打开Add_script在里面通过AddComponent给物体Capsule自己添加Force脚本,通过Destroy删除脚本组件,并分别设置space与delete按键。

UnityEngineInternal.APIUpdaterRuntimeServices.AddComponent(GameObject.Find ("Capsule"), "添加力", "Force");Destroy(GetComponent<Force>())。

6,把Add_script脚本添加到物体上面。

7,按下space按键force脚本就添加到物体山面了。

8,现在可以给物体添加力移动物体,所以这个脚本是有效果的。

9,然后按下delete键,物体上的脚本就会被删除了,这样就可以灵活的给物体添加删除脚本了。

参考技术A 直接删除的话在面板中选择myscript右边的齿轮状按钮,选择remove component 即可
如果你是要在脚本中实时删掉,比如去掉一个名为cube的物体的名为"myscript"的脚本
C#中可以这样写
Destroy( GameObject.Find("Cube").GetComponent<myscript>());
如果是js
可以这样写
Destroy( GameObject.Find("Cube").GetComponent(myscript));
当然如果你的脚本是直接加在需要删除myscript的物体上,那么脚本中的 GameObject.Find("Cube"). 可以换成gameObject.本回答被提问者采纳

Unity Gameobject Transform

参考技术A

参考
Unity3d 之 理解Gameobject ,gameObject,Transform,transform的区别和关联
GameObject.Find与Transform.Find的区别
【Unity3D游戏开发】GameObject.Find()、Transform.Find查找隐藏对象 (十)

两者返回的类型是不同的:

把这个脚本挂在testfind节点上,指定testName为a或b时,可以找到。而指定为aa或bb时,结果是没找到。此时可以传路径进去,指定为a/aa时,发现又可以找到了。 这就说明了 transform.Find不会递归查找。

在实际开发中可能遇到这样的情况,给定一个节点,在这个子节点中递归的查找符合条件的节点。transform.Find不能递归查找,不能直接使用,GameObject.Find又做了很多无用功,关键若是重名还不一定能满足需求。于是我们可以自己写一个递归程序:

参考 unity3d 提高this.transform的效率

正常来说,大部分同学一般get transform都直接gameobject.transform使用。但往往,你会发现有些人会将transform引用保存起来,例如:

然后使用myTransform替代this.transform。如果你不知道u3d内部实现获取方式你肯定会以为这人脑抽水了,有直接的不用,还自己保存起来。

在Visual Studio中按F12进入定义可以看到,这些属性都是getter。我们的每一次调用,Unity内部会从GameObject里搜寻这些Component,会有一定的损耗。估计大概的效率(没测试,以后有时间再弄,大家可以参考下文章最后的链接):

实际上如果你是偶尔调用一下transform的话,那就不要保留它的引用了,直接this.transform。 如果是Update中,每一帧都要改变的话,还是保留一下this.transform的引用吧。 毕竟倘若一大堆东西的话,能快不少呢。

以上是关于unity3d 如何把gameobject上的脚本删除的主要内容,如果未能解决你的问题,请参考以下文章

Unity3D脚本编程--基本概念

unity3d中给GameObject绑定脚本的代码

unity3d 子弹脚本的问题。

在unity3d中想要删除脚本应该点击下拉菜单后选择

unity3d 中如何去除掉一个GameObject的MeshRenderer

Unity3D LuaComponent(基于ulua)