如何删除enemyprefab
但不是enemanim
动画师的敌人?
#pragma strict
var enemy : GameObject;
var speed : float = 1.0;
var enemanim : Animator;
function Start() {
this.transform.position.x = 8.325;
this.transform.position.y = -1.3;
enemanim = this.GetComponent(Animator);
enemanim.SetFloat("isdead", 0);
}
function OnCollisionEnter2D(coll: Collision2D) {
if (coll.gameObject.CompareTag("distroy")) {
Destroy(this.gameObject);
}
}
function enemstruck() {
enemanim.SetFloat("isdead", 1);
}
function FixedUpdate() {
this.transform.Translate(Vector3(Input.GetAxis("Horizontal") * speed * Time.deltaTime, 0, 0));
this.rigidbody2D.velocity = Vector2(-5, 0);
}
这是我的敌人预制代码我在我的主要实例化
这2个var:
var enemytrans : Transform;
var enemy : GameObject;
function Start () {
while (true) {
yield WaitForSeconds (Random.Range(3, 0));
enemy = Instantiate(enemytrans).gameObject;
}
答案 0 :(得分:2)
我认为您无法删除GameObject并保存其中一个组件。每个组件都需要连接到一些GameObject,你也不能将它们移动到其他GameObjects。
您可以做的是从GameObject中删除其他组件,您将获得相同的结果。 您可以使用以下脚本删除组件:
Destroy(gameObject.GetComponent(yourComponent));
答案 1 :(得分:0)
可以保存Component
和Destroy
GameObject
。虽然我只能想到很少有特殊情况,这可以通过逻辑完成(不是出于疯狂)。
例如,您可能有不同的敌人,当一个人死亡时,其特殊权力通过Component
转移到另一个敌人。
所以我就是这样做的,使用上面的例子(代码是C#
,因为UnityScript缺乏力量):
public void die()
{
Component c = GetComponent<TheType>();
// Send component.
BroadcastMessage("setComponent", c);
// Destroy.
Destroy(gameObject);
}
然后,正在听setComponent
的任何对象都会处理它:
public void setComponent(Component c)
{
gameObject.AddComponent<c>();
}
我之前从未这样做过,但它出来的太棒了,现在我要把它添加到我的一个游戏中