我正在关注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
方法中 .
2 回答
这段代码有几个问题 .
首先,你没有提到它究竟附加了什么?我假设它附加到粒子系统 .
其次,使用“gameObject”而不是“GameObject”,因为GameObject是类的名称 .
第三,我相信有一种更有效的方法来破坏gameObject而不检查每个帧是否粒子系统已经完成,可能设置一个小计时器?或者随着时间调用功能?
根据事件的设置方式,将取决于检查粒子是否正在运行的方法 . 如果您可以在进入时设置碰撞器,则可以触发事件以了解粒子已打开 . 在离开对撞机时,颗粒将关闭 .
我不是100%关于C#中返回的语法,但看起来它应该在你破坏你的游戏对象之后 . 我认为回归的工作方式与那方面的突破相似 . (特别是因为你似乎没有回复任何 Value ,为什么你需要呢?)