You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XNA中从列表绘制矩形报错:无匹配的MapBounderies构造函数

解决XNA中创建MapBounderies实例的参数错误问题

别担心,刚接触XNA遇到这种构造函数参数问题很正常,我来帮你一步步理清:

错误原因

你定义的MapBounderies类只提供了一个带5个参数的构造函数,没有定义无参数的默认构造函数。当你尝试用new MapBounderies()创建实例时,编译器找不到匹配的无参构造方法,就会抛出你看到的参数不匹配错误。

两种解决方案

根据你的需求选一种就行:

方案1:添加无参数构造函数

如果你希望先创建实例,再后续设置属性,就给MapBounderies类加一个无参构造函数:

public class MapBounderies
{
    public int boundY, boundX, boundWidth, boundLength;
    public Texture2D rectTexture;
    public Rectangle boundRectangle;
    public List<MapBounderies> boundsList = new List<MapBounderies>();

    // 添加这个无参数构造函数
    public MapBounderies()
    {
        // 可以在这里设置默认值,比如
        boundX = 0;
        boundY = 0;
        boundWidth = 0;
        boundLength = 0;
        boundRectangle = Rectangle.Empty;
    }

    // 你原来的带参数构造函数
    public MapBounderies(Rectangle bRectangle, int intX, int intY, int intWidth, int intLength)
    {
        boundY = intY;
        boundX = intX;
        boundWidth = intWidth;
        boundLength = intLength;
        // 这里建议加上对boundRectangle的赋值,不然传入的bRectangle没用上
        boundRectangle = bRectangle;
    }

    // 你的Load、AddToList、Draw方法...
}

这样你就能用MapBounderies mapBounderies = new MapBounderies();正常创建实例了。

方案2:调用带参数的构造函数

如果你想在创建实例时就传入所有必要参数,就按照构造函数的要求传值:

// 先创建一个Rectangle对象(或者用你需要的矩形)
Rectangle targetRect = new Rectangle(100, 100, 100, 100);
// 传入所有5个参数创建实例
MapBounderies mapBounderies = new MapBounderies(targetRect, 100, 100, 100, 100);

额外的小建议

  1. 你原来的构造函数里没有使用传入的bRectangle参数给类的boundRectangle字段赋值,我已经在方案1的代码里补上了,不然这个参数等于白传哦。
  2. 你的boundsList是类的实例字段,如果每个MapBounderies实例都有自己的列表,可能不是你想要的效果。如果是要维护一个全局的边界列表,建议把它改成静态字段:public static List<MapBounderies> boundsList = new List<MapBounderies>();,这样所有实例共享同一个列表。

内容的提问来源于stack exchange,提问作者sa1addd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 21:02:34