C# 完成后销毁踪迹

C# 完成后销毁踪迹,c#,unity3d,game-physics,C#,Unity3d,Game Physics,我有一个附带有轨迹渲染器的导弹 我想在完成渲染过程后销毁游戏对象(带有轨迹) 以下代码不起作用: private TrailRenderer tr; public void Start() { tr = GetComponent<TrailRenderer>(); } public void Update() { if(tr) { if(tr.isVisible == false) { Destroy(this.gam

我有一个附带有轨迹渲染器的导弹

我想在完成渲染过程后销毁游戏对象(带有轨迹)

以下代码不起作用:

private TrailRenderer tr;


public void Start() {
    tr = GetComponent<TrailRenderer>();
}

public void Update() {

    if(tr) {

        if(tr.isVisible == false) {
            Destroy(this.gameObject);
        }
    }
}
private TrailRenderer tr;
公开作废开始(){
tr=GetComponent();
}
公共无效更新(){
如果(tr){
如果(tr.isVisible==false){
摧毁(这个游戏对象);
}
}
}

我假设您希望在最终轨迹段的持续时间
已过时销毁轨迹渲染器。如果是这种情况,正如Eddge所建议的,一旦导弹被摧毁或停止移动,你应该在延迟后销毁:

private TrailRenderer tr;

void Start() {
    tr = GetComponent<TrailRenderer>();
}

public void MissileDestroyed()
{
    Destroy(gameObject, tr.time);
}
private TrailRenderer tr;
void Start(){
tr=GetComponent();
}
公共无效信息发布日期()
{
销毁(游戏对象,tr.time);
}

Put
Debug.Log
in
if(tr.isVisible==false)
并查看其计算结果是否为true。如果没有调用日志,那么这就是问题所在。在
if(tr)
中放入另一个变量,查看
tr
变量是否在
Start
函数中成功初始化。我已经在if(tr.isVisible==false)中放入Debug.log,但没有显示任何内容。这就是问题所在。是否有其他方法检查渲染过程是否已完成?iniside if(tr)如何?这一条件也必须满足。“渲染过程已完成”是什么意思?最好只是解释什么时候该消灭叛徒。如果(tr)的结果为真,那么您当前试图解释的内容是令人困惑的。这很有效。对于渲染过程,我的意思是当轨迹动画刚刚完成时。然后我想摧毁这个物体,看瑞莫斯的回答。当我使用这个代码时,我的踪迹会在发射导弹后立即消失。这看起来不太好。你查过自毁财产了吗?@drpelz你能告诉我们你的确切意思吗?就像导弹还在那里移动,踪迹消失了?(当你说释放时,我不确定你是指发射或摧毁导弹时)@Eddge,回头看,我同意-将更新答案