C# 如何在数组中显示要筛选的一组索引

C# 如何在数组中显示要筛选的一组索引,c#,xna,monogame,C#,Xna,Monogame,我使用的是一个BaseItem列表,我想在每次按下某个按钮时显示,以显示数组中的不同索引范围 下面是一个示例,我尝试添加不可堆叠的不同项目 Public class BaseItem { public string name {get;set;} public string descrip {get;set;} public bool isStackable {get;set;} public int stackSize {get;set;} public

我使用的是一个BaseItem列表,我想在每次按下某个按钮时显示,以显示数组中的不同索引范围

下面是一个示例,我尝试添加不可堆叠的不同项目

Public class BaseItem
{
    public string name {get;set;}
    public string descrip {get;set;}
    public bool isStackable {get;set;}
    public int stackSize {get;set;}
    public int maxStackSize {get;set;}
    public Texture2D texure{get;set}
}
我使用了我在这个网站上通过搜索找到的这部分代码

Vector2 Pos;
int ItemsPerPage = 6;
int Columns = 1;
int Rows = 255;
int CurrentPage = 1;
int MaxPages;
BaseItem[,] items = new Baseitem[Columns,Rows];

public void Draw(SpriteBatch spriteBatch)
{

       for(int X = 0; i < Columns; X ++)
       {
          for(int X = 0; i < Columns; X ++)
          {
              int DrawX = Pos.X +(X * (slothSize +2);
              int DrawY = Pos.Y +(Y * (slothSize +2);
              spriteBatch.Draw(items[X,Y].texure, new Rectangle(DrawX, DrawY, 32,32), Color.Whie);
          }

       }

}
现在它根本不会将项目绘制到屏幕上……如果我只是将结果替换为项目(列表),它将绘制,但不会用
ItemsPerPage


我可以使用
列和行设置“槽”的数量,但如何更改页面…也就是跳过数组中的一个数字并显示下一个索引…类似于1D数组
。跳过(20)。以(29)
在2D数组中完成?

在绘图方法中,您有两个矩形:第一个是DrawX和DrawY设置为位置,第二个是0,0。我想,你可以用第二个而不是第一个

代码中“页面”的概念在哪里?它应该很简单,类似这样:
spriteBatch.Draw(…);绘图页(页码);numDrawnOnThisPage++;如果(numdrawnothispage==6){pageNumber++;numdrawnothispage=0;}
,我的想法是
MaxPages=math.celling(items.length/ItemsPerPage)所以当我按下某个按钮时,它使用CurrentPage作为值来更改页面并显示每页x个数量。所以我需要帮助解决这个小问题。你需要计算a
MaxPages
?为什么不每页一次画6个项目,直到项目用完为止。如果您想知道页面的数量,您可以在创建页面时对其进行计数。是的,您可以计算它,您的
Math.天花()
将起作用,但您需要先将至少一个参数强制转换为float,否则整数除法将首先截断结果:
Math.天花((float)items.Length/ItemsPerPage)
应该起作用。如何设置一次可以绘制多少项。如果我说6…页面是2…它需要从5到11,以此类推。我如何设置每页的maxitems?所以基本上我想在第1页从0画到5,在第2页从6画到11等等。当我将
Currentpage
中的值减少/增加1时,在该数组中绘制该组索引。我这样做了,但我得到了错误
foreach(结果中的项)
Erorr部分指向;我现在并没有举例说明……前两个参数是X和Y位置,秒是物体的宽度和高度。对于两个矩形…你的意思是我替换第一个0,0.sw,sh和第二个DrawX,DrawY,sw,sh sw=slotwidth,sh=slotheight?当我在
foreach(结果中的项目)
前foreach循环
var result=items.Cast()。跳过(3)。采取(1)
我看不到foreah循环项目的内部。纹理或类似的东西。我仍然使用items[X,Y].Textrue….而且它仍然在绘制多于
ItemsPerPage=3
says的图。这个答案没有帮助。
BaseItem items[,] = new BaseItem[] {} 


public void Draw(SpriteBatch spriteBatch)
{
     var result = Items.Cast<double>().Skip(ItemsPerPage * Currentpage).Take(itemsPerPage);
    foreach(item in result)
    {
        for(int X = 0; X < Columns; X++)
        {
            for(int Y = 0;Y < Rows; Y++)
             { 
                 int DrawX = pos.X + (X * (SlowtWidth +2);
                 int DrawY = pos.Y + (Y * (SlowtWidth +2);
                 if(items[X,Y] != null)
                 {
                      spriteBatch.Draw(items[X,Y], new Rectangle(DrawX,DrawY,SlotWidth, SlotHeight) new Rectangle(0,0,SlotWidth, SlotHeight),Color.White)  
                 }
             {
        {
    }
}

public void Update(GameTime gameTime)
{
    if(CurrentPage <= 0)
    {
       CurrentPage = MaxPages;
    }

    if(CurrentPage => MaxPages)
    {
       CurrentPage = 1;
    }
    if(Input.KeyPressed(Keys.A))
    { 
        CurrentPage++;
    {
    if(Input.KeyPressed(Keys.D))
    { 
        CurrentPage--;
    {
    Input.Update(gameTime)
}