c# - (Unity 2D)在离开屏幕时销毁实例化的预制件?

标签 c# android unity3d destroy

我在 Unity 2D(4.3) 中制作 2D 游戏,我需要销毁在这些预制件离开屏幕时实例化的预制件。我已经编写了一些代码来生成对象,但是当它们离开屏幕时我想删除这些预制件。 这是我到目前为止编写的代码。

生成预制件(C#):

void Update () {
    float y = Random.Range(-4.53f, 2.207f);
    if(x < 2000) {
        Instantiate(obstacle, new Vector3(y, x * 6.0f, 0),Quaternion.identity);
        x++;
    }
    //Debug.Log(x);

}

销毁预制件(C#):

    /*************************************************************************************************
     * GET INSTANTIATED OBSTACLE
     * AND DESTROY IT ON EXIT
     * TO SAVE MEMORY
    **************************************************************************************************/
    GameObject clone = (GameObject)Instantiate (obstacle);

    /*if(clone.transform.position.y == -11)
    {
        Destroy(clone);
        Debug.Log("Destroy");
    }*/

    Vector2 screenPosition = Camera.main.WorldToScreenPoint(transform.position);
    if (screenPosition.y > Screen.height || screenPosition.y < 0)
    {
        Destroy(gameObject);
        Debug.Log("Destroy");
    }

但是,销毁对象的代码无法正常工作,但也没有出现错误。它确实在预制件离开屏幕后输出“销毁”,所以我知道销毁它们的代码有问题。

谢谢

最佳答案

您可以制作一个组件,当位置超出相机时会自行销毁,然后将此组件附加到障碍物上。

void Update() {
    float y = Random.Range(-4.53f, 2.207f);
    if(x < 2000) {
        GameObject clone = (GameObject)Instantiate(obstacle, new Vector3(y, x * 6.0f, 0),Quaternion.identity);
        clone.AddComponent(typeof(DestroyMySelf));
        x++;
    }
}

这个组件附着在障碍物上会 self 毁灭。

public class DestroyMySelf : MonoBehaviour {
    void Update() {
        Vector2 screenPosition = Camera.main.WorldToScreenPoint(transform.position);
        if (screenPosition.y > Screen.height || screenPosition.y < 0)
        Destroy(this.gameObject);
    }
}

关于c# - (Unity 2D)在离开屏幕时销毁实例化的预制件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23217840/

相关文章:

c# - Controller 找不到局部 View

c# - 在 Task.Run 上使用 await 会出现 "access to disposed closure"错误吗?

java - 错误 :(51, 9) 错误:找不到符号变量 mTracker Google Analytics

c# - 在 Unity 2d 中添加速度后没有反弹

c# - 使用 Windows 身份验证的 HttpClient 非常慢

android - 是否可以使用 ACTION_SENTO Intent 发送给多个收件人?

android - 如何像 Pinterest 一样在 Android ImageView 中实现对占位符图像的关注?

c# - 在智能感知中显示 C# 引用文档

android - Unity gradle build - 合并 dex 文件时出错

c# - 使用 LINQ 获取表中的位置