好吧,所以我基本上想要制作一个地形,就像一个直的场或什么的。 所以我需要一个纹理宽度的屏幕宽度。 我试着这样做:
int TextureHeight = graphics.PrefferedBackBufferWidth;
就像我在game1.cs类中所做的一样,但它不允许我做“图形”属性。
我也尝试过这样做:
GraphicsDevice.Viewport.TitleSafeArea.X
所以我不知道该怎么做,也许还有另一种方法可以在整个屏幕宽度上绘制纹理?
顺便说一句,我提到的那两种图形方法有什么区别?
感谢帮助者。
答案 0 :(得分:0)
Game1类包含GraphicsDevice的定义,正如您已经使用过的那样。但是,您创建的其他类不会。如果要在其他类中使用GraphicsDevice类,则必须将其传递给这些类,就像任何其他变量一样。
答案 1 :(得分:0)
你需要一个graphicsDevice,但是创建很多图形设备和其他东西真的很麻烦。因此,在游戏中传递任何你想要的值(比如你的屏幕宽度)的一种非常简单的方法是创建一个“GlobalVariable”,你可以在任何你想要的类中使用它。以下是如何完成这个简单的技巧。
首先创建一个新类并将其称为GlobalClass像这样:
class GlobalClass
{
}
现在添加一个私有变量,使用公共方式访问它。在这里,我创建了两个变量,一个用于屏幕高度,另一个用于宽度。
class GlobalClass
{
private static float screenWidth;
private static float screenHeight;
public static float ScreenWidth
{
get { return screenWidth; }
set { screenWidth = value; }
}
public static float ScreenHeight
{
get { return screenHeight; }
set { screenHeight = value; }
}
}
你完成了!通过这个课程,你可以在游戏的任何地方传递这两个变量。所以回到你的主要类(game1.cs)并在更新Methode Update中更新这些变量的值,屏幕高度和屏幕宽度如下:
GlobalClass.ScreenWidth = graphics.PreferredBackBufferWidth;
GlobalClass.ScreenHeight = graphics.PreferredBackBufferHeight;
现在回到你的自定义类替换你的代码:
int TextureHeight = GlobalClass.ScreenWidth;
已经完成了,这样你就可以在任何地方传递你想要的任何价值。只需确保在使用其值之前更新GlobalClass.ScreenWidth。