基本上我想要做的是顯示16項到屏幕和額外的添加到新頁面。如何跳過並採取陣列
16個項目是每頁顯示,另外16個是分開的其他屏幕。
我使用2D陣列以顯示/顯示篩選
Vector2 Pos;
int ItemsPerpage = 16;
int CurrentPage;
public void Draw(SpriteBatch spriteBatch)
{
var result = items.Cast<double>().Skip(ItemsPerpage * CurrentPage).Skip(ItemsPerpage);
foreach (var item in items)
{
for (int X = 0; X < Columns; X++)
{
for (int Y = 0; Y < Rows; Y++)
{
int DrawX = (int)pos.X + (X * (slotWight + 2));
int DrawY = (int)pos.Y + (Y * (slotWight + 2));
if(items[X,Y] != null)
{
spriteBatch.Draw(items[X,Y].Texure, new Rectangle(DrawX, DrawY ,32, 32), new Rectangle(0, 0, 64, 64), Color.White);
}
}
}
}
}
在此代碼spritebatch.draw(item.texture dose not exit)
如果我在替換用結果每個環的物品。
例
public void Draw(SpriteBatch spriteBatch)
{
var result = items.Cast<double>().Skip(ItemsPerpage * CurrentPage).Skip(ItemsPerpage);
foreach (var item in result)
{
for (int X = 0; X < Columns; X++)
{
for (int Y = 0; Y < Rows; Y++)
{
int DrawX = (int)pos.X + (X * (slotWight + 2));
int DrawY = (int)pos.Y + (Y * (slotWight + 2));
if(items[X,Y] != null)
{
spriteBatch.Draw(item.Texure, new Rectangle(DrawX, DrawY ,32, 32), new Rectangle(0, 0, 64, 64), Color.White);
}
}
}
}
}
這表明我的列表中的所有項目。 作爲顯示在這張照片
你想跳過走,但你只是用'Skip'你的代碼。我想象第二個'Skip'應該是一個'Take'。 – Abion47
另外,你得到的錯誤是因爲在你操作''double''之前,''items''被加入到'double'類型的集合中,'double'沒有名爲'Texture'的字段。任何理由做演員? – Abion47
我只是在例子中做的,只是它顯示的數量和以前一樣。 如果我用結果替換項目列表,則無法看到「item.texture」。 (紋理,矩形(int,int,int,int),Color.White);'我需要在第一個參數中設置紋理。我在第一個矩形中設置了繪畫的位置,第二個矩形用於繪製哪個部分以及在哪裏繪製。 所以,如果我有spritesheet我可以使用特定的精靈繪製使用第二個矩形。 – user3768433