2015-09-04 3 views
2

Так вот мой код:C# XNA - Перебор элементов и рисунок их

// Variables 
private SpriteFont font; 
private Vector2 fontPos, fontOrigin; 
private List<string> menuItems; 

// LoadContent() 
font = Content.Load<SpriteFont>("myFont"); 
fontPos = new Vector2(1920/2, 1080/2); 
menuItems = new List<string>(); 
menuItems.Add("Single Player"); 
menuItems.Add("Multi Player"); 
menuItems.Add("Achievements"); 
menuItems.Add("Options"); 
menuItems.Add("Quit Game"); 

// Draw() 
for (int i = 0; i < menuItems.Count; i++) 
{ 
    Vector2 fontOrigin = Game.gameFontLarge.MeasureString(menuItems[i])/2; 
    spriteBatch.DrawString(Game.gameFontLarge, menuItems[i], new Vector2(ScreenManager.Instance.Dimensions.X/2, ScreenManager.Instance.Dimensions.Y/2), Game.NoTint, 0.0f, fontOrigin, 1.0f, SpriteEffects.None, 0.0f); 
} 

До сих пор этот код рисует все, но все тексты рисуются друг над другом на одних и тех же координатах, центр экрана , Как сделать каждую из строк в списке ниже предыдущей, например 24 пикселей ниже предшественника?

ответ

1

Если я правильно читаю ваш вопрос, когда вы рисуете свои строки, вы можете просто добавить фиксированное количество пикселей в значение каждой строки y на основе его индекса.

Так что ваша линия здесь:

spriteBatch.DrawString(. . . , new Vector2(ScreenManager.Instance.Dimensions.X/2, ScreenManager.Instance.Dimensions.Y/2), . . .); 

становится больше похожи на следующее:

spriteBatch.DrawString(. . . , new Vector2(ScreenManager.Instance.Dimensions.X/2, (ScreenManager.Instance.Dimensions.Y/2) + 24 * i), . . .); 

Надеется, что это решение работает для вас - я не совсем знаком с XNA, но это должно быть Главная идея. Если это дает вам ошибку несоответствия типа, вам может понадобиться сделать i, используя вместо этого (float)i.

+0

Спасибо! Он работает без кавычки 'i' для плавания. Поскольку я тестировал, 'Vector2.Y' и' Vector2.X' являются 'float', но мне не нужно было отличать' 2' в разделе, потому что floats можно разделить/умножить на целые числа (возможно, не во всех случаях, но этот точный случай не нуждается в литье). – jacksparrow

Смежные вопросы