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