我正在使用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);
}
}
}
我的問題,我怎麼每頁顯示6項,所以額外的項目將被移動到下一個頁面,
,所以如果我有30個項目我傷口需要有5頁,所有的有6項。
我的主要問題是如何設置和使用var itemsPerPage.
所以基本上基於itemes.length/ItemsPerPage = maxPages
我曾嘗試過使用一維數組 此外,我不能在當時繪製更多的項目。他們都在相同的位置上繪製。 如果我使用For循環2次...使它X和Y位置....它不會畫。 下面是一個例子:
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)
}
現在,它不會繪製項目屏幕在所有...如果我只是替換項目(名單)結果就得出,但不與帽名單ItemsPerPage
我可以通過使用columns and rows
來設置一些「插槽」,但我怎樣才能改變頁面...又名跳過一個數組,並顯示下一個索引...像一維數組.skip(20).take(29)
芽在二維數組中完成?
代碼中的「頁面」的概念在哪裏?它應該很簡單,像這樣:'spriteBatch.Draw(...);一個DrawPage(PAGENUMBER); numDrawnOnThisPage ++; if(numDrawnOnThisPage == 6){pageNumber ++; numDrawnOnThisPage = 0; }'。 – Quantic
我在想'MaxPages = math.celling(items.length/ItemsPerPage);' 因此,當我按下某個按鈕時,它使用CurrentPage作爲值來改變頁面並顯示每頁數量x。 所以我需要幫助解決這個問題。 – user3768433
你需要計算一個'MaxPages'嗎?爲什麼不直接每頁繪製物品6,直到耗盡物品。如果你想知道頁數,你可以在創建它們時對它們進行計數。但是你可以計算出來,你的'Math.Ceiling()'可以工作,但是你至少需要先將一個參數強制轉換爲浮點數,否則整數除法將首先截斷結果:'Math.Ceiling((float) items.Length/ItemsPerPage)'應該工作。 – Quantic