c# - 如何在销毁对象时使用 Initiate?
问题描述
我正在尝试编写允许我点击对象并销毁它的代码,当它消失时,爆炸效果会在被破坏对象的位置上播放一次,或者新对象会在前一个对象所在的位置产生。
我试图寻找一些关于如何编写“点击对象”功能并销毁它的教程。我能够做到这一点,但我无法产生任何东西。
using System.Collections.Generic;
using System.Collections;
using UnityEngine;
using System;
public class IceTile : MonoBehaviour
{
internal Vector3 m_MyTravelPoint;
private void Start()
{
m_MyTravelPoint = transform.position + new Vector3(0, 0.61f, 0);
}
private void OnDrawGizmosSelected()
{
Gizmos.DrawWireSphere(m_MyTravelPoint, 0.5f);
}
void Update()
{
}
void OnMouseDown()
{
// this object was clicked - do something
object Eff_Heal_2_oneShot = null;
Instatiate(Eff_Heal_2_oneShot, transform.position,
Quaternion.identity, out hit);
Destroy(this.gameObject);
}
private void Instatiate(object eff_Heal_2_oneShot, object position,
Quaternion identity)
{
throw new NotImplementedException();
}
}
我希望这段代码允许我触摸和删除对象并导致爆炸或生成对象,但我没有成功。
解决方案
首先,摆脱您的自定义Instantiate
方法。对象上已经有一个正常工作的Instantiate
方法;你不需要再做一个。
然后,public GameObject explosionEffect
在类中添加一个字段。这将包含您要生成的爆炸预制件。在场景检查器中,将预制件拖到其中。
此外,要使用 检测鼠标点击OnMouseDown
,您需要将某种Collider
组件附加到IceTile
的游戏对象。您可能已经这样做了。这可以在场景编辑器中完成。
在OnMouseDown
你调用之前Destroy
,调用Instantiate
产生爆炸效果:
Instantiate (explosionEffect, transform.position);
总而言之,这可能看起来像这样:
using System.Collections.Generic;
using System.Collections;
using UnityEngine;
using System;
public class IceTile : MonoBehaviour
{
internal Vector3 m_MyTravelPoint;
public GameObject explosionEffect;
private void Start()
{
m_MyTravelPoint = transform.position + new Vector3(0, 0.61f, 0);
}
private void OnDrawGizmosSelected()
{
Gizmos.DrawWireSphere(m_MyTravelPoint, 0.5f);
}
void Update()
{
}
void OnMouseDown()
{
// this object was clicked - do something
Instantiate(explosionEffect, transform.position);
Destroy(this.gameObject);
}
}
推荐阅读
- python - 删除/替换 GridSizer 中的项目?
- django - 自定义用户在数据库中没有密码
- python - 根据条件和输入参数替换行的值
- dynamics-crm - 是否可以在创建记录后同时运行同步和异步插件?
- java - 如何处理来自同一端点的不同 JSON 响应
- regex - Pandas,使用另一个数据帧值在数据帧中查找匹配的关键字
- c# - 在 AutoMapper 中,目标类型上的只读集合属性不会被自动忽略
- ios - 使用 Swift 跟踪 VPN 数据使用情况
- reactjs - 在世博会应用程序中卡住“下载 Javascript 包 100.00%”
- r - R Shiny:从选定的输入创建动态 UI