我正在关注Unity 4上的团结教程,但我在Unity 5上,当我尝试使用看到的脚本(https://youtu.be/vwUahWrY9Jg?t=1337)并尝试使用它时,它会出错:
Assets / Scripts / DestroyFinishedParticle.cs(18,17):错误CS0246:类型或命名空间名称`Destroy'无法找到。您是否缺少using指令或程序集引用?
这是代码:
using UnityEngine;
using System.Collections;
public class DestroyFinishedParticle : MonoBehaviour {
private ParticleSystem thisParticleSystem;
// Use this for initialization
void Start () {
thisParticleSystem = GetComponent<ParticleSystem>();
}
// Update is called once per frame
void Update() {
if (thisParticleSystem.isPlaying)
return;
Destroy (GameObject);
}
}
可能是因为统一的C#代码从4变为5?我应该改变什么?问题似乎出现在Update
方法中。
答案 0 :(得分:2)
此代码存在几个问题。
首先,你没有提到它究竟附加了什么?我认为它附加到粒子系统。
其次,使用“gameObject”,而不是“GameObject”,因为GameObject是该类的名称。
第三,我相信有一种更有效的方法来破坏gameObject而不检查每个帧是否粒子系统已经完成,可能设置一个小计时器?或者用时间调用函数?
答案 1 :(得分:0)
取决于事件的设置方式,将取决于检查粒子是否正在运行的方法。如果您可以在进入时设置对撞机,则可以触发一个事件以知道粒子处于打开状态。离开对撞机后,粒子将关闭。
对于C#中return的语法,我不是100%的,但似乎应该在销毁游戏对象之后使用。我认为return的工作方式与该方面的突破类似(特别是因为无论如何您似乎都没有返回任何值,为什么需要它?)