个人资料

跳过导航链接首页 > 博客列表 > 博客正文

使用MonoGame中的DrawableComponent

:

将level的代码继承DrawableGameComponent

通过添加或移除游戏组件实现关卡切换

例如

public class BirthPoint : DrawableGameComponent

{

        public BirthPoint(Game game) :base(game)
        {
        

        }
}

将类实例化后加入game component 列表中 

只需要重写init/loadcontent/update/draw 方法即可

无需将init/loadcontent/update/draw 添加到主循环代码中

可以在游戏组件中添加其他组件

关卡通关后移除全部游戏组件 , 重新加载 完成关卡切换

        public void UnLoadLevel()
        {
            //_world = new World();
            //倒序移除
            for (int i = Game.Components.Count - 1; i >= 0; i--)
            {

                if (Game.Components[i] != null)
                {
                    Debug.WriteLine(Game.Components[i].ToString());
                }
                Game.Components.Remove(Game.Components[i]);
                Debug.WriteLine($"NO{i}: 卸载成功");
            }
        }

Game.Components和list类似,不能在便利循环循环过程中改变list数组大小,可以倒序移除


songshizhao
最初发表2022/5/2 1:02:53 最近更新2022/5/2 1:03:40 722
为此篇作品打分
10