首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从Game.Components中删除GameComponent?

如何从Game.Components中删除GameComponent?
EN

Stack Overflow用户
提问于 2019-12-07 04:11:53
回答 1查看 91关注 0票数 1

基本上,我的游戏是用木板阻止石头从天而降。我不确定什么地方不能正常工作,但下面是我的代码:在RockManager类中

代码语言:javascript
复制
public void CheckForPlankCollision(Plank plank)
{
    foreach (GameComponent component in Game.Components)
    {
        if (component is FallingRock rock)
        {
            if (plank.Bounds.Intersects(rock.Bounds))
            {
                rock.HandleCollision();
                Rectangle bounds = rock.Bounds;
            }
        }
    }
}

在Rocks类中

代码语言:javascript
复制
public void HandleCollision()
{
    //rockPosition = rockAfterImpactPosition; // I tried to move it offscreen
    //rockPosition = Vector2.Zero; //I tried for any reaction
    //this.Enabled = false; // tried this
    //Game.Components.Remove(this); //tried this
}

我也在尝试实现一个评分系统。(石头落地加1分,落地减分1分)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-16 22:48:39

尝试将this转换为IGameComponentGameComponent对象。

代码语言:javascript
复制
public void HandleCollision()
{
    Game.Components.Remove((GameComponent)this);
}

告诉我这对你是否有效!

编辑:您可能还希望将删除游戏对象的操作推迟到以后foreach (GameComponent component in Game.Components)循环不使用游戏对象时,因为在此期间,该循环可能会锁定删除元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59219720

复制
相关文章

相似问题

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