首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >破坏粒子系统

破坏粒子系统
EN

Stack Overflow用户
提问于 2016-02-07 05:31:50
回答 2查看 954关注 0票数 3

在我的游戏中,有一个球击中了一个硬币,然后硬币消失了,一个粒子系统被初始化。

我的问题是破坏我想要写的粒子系统

代码语言:javascript
复制
Destroy(effect.gameObject)

但是我收到一条错误消息,告诉我gameObject没有定义。

统一版本为4.6.3

我们会感谢你的帮助。

这是我的代码

代码语言:javascript
复制
public class CoinDestroyer : MonoBehaviour {
   public Transform coinEffect;
   void OnTriggerEnter (Collider other){
       if (other.tag == "Player"){
           var effect = Instantiate(coinEffect, transform.position, transform.rotation);
           Destroy(effect.gameObject, 3);
           Destroy(gameObject);
       }
   }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-07 08:10:58

实例化返回一个类型为Object的对象,它是Unity中的顶级类(而不是.NET类型)。由于您使用var效果,所以编译器可以很好地使对象生效。但是您需要一个GameObject,因为对象没有gameObject成员。

代码语言:javascript
复制
var effect = (GameObject)Instantiate(coinEffect, transform.position, transform.rotation);

这是使用var而不是强类型变量的危险之一。最好是:

代码语言:javascript
复制
GameObject effect = (GameObject)Instantiate(coinEffect, transform.position, transform.rotation);

在这种情况下,如果转换丢失,编译器将抛出一个错误,抱怨对象不能是GameObject,需要强制转换。

我只在我100%确定类型的情况下使用var,并且像KeyValuePair<string,List<GameObject>>那样编写它是一个很长的过程,否则,总是正确的类型。

票数 2
EN

Stack Overflow用户

发布于 2016-02-10 07:52:20

您所得到的错误是因为包含效果的对象被破坏了,我建议您在脚本内部的粒子系统中使用一个脚本,应该给以下脚本一个生命周期:

代码语言:javascript
复制
lifeTime = 1.0f
void Start() {
    Invoke ("SelfDestruct", lifeTime);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35250110

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档