gpt4 book ai didi

c# - 如何在其他类中使用 ScreenWidth?

转载 作者:行者123 更新时间:2023-11-30 22:24:51 26 4
gpt4 key购买 nike

这是我用来获取包含 screenHeight 的变量的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;

Ball pall;
MinuPad playerPad;
public int screenWidth;
public int screenHeight;

public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";

}

protected override void Initialize()
{
screenWidth = GraphicsDevice.Viewport.Width;
screenHeight = GraphicsDevice.Viewport.Height;

但我不能在不同的类中使用该变量。例如,我有一个名为 Ball.cs 的类,我还需要在其中使用有关 screenWidthscreenHeight 的信息。

当我尝试使用相同的 GraphicsDevice.Viewport.Width 时,它给了我:

An object reference is required for the non-static field, method, or property 
'Microsoft.Xna.Framework.Graphics.GraphicsDevice.Viewport.get'

我的问题:为什么我不能在其他类中使用 GraphicsDevice.Viewport?我应该怎么做才能解决这个问题?

最佳答案

您无法访问它的原因是因为 Ball 类的实例根本不知道视口(viewport)。您可以通过几个选项解决此问题,主要是通过 Viewport给你的球的构造者,例如:

public class Ball
{

Viewport viewport;

// ...

public Ball(int stuff, Viewport viewport)
{
this.viewport = viewport;

// ...
}
}

Game1 中创建球的实例与以下内容一起上课:

Ball ball = new Ball(42, GraphicsDevice.Viewport);

然后你可以简单地做 viewport.Height来自 Ball.cs 中。

如果你想要更全局的东西以便你可以在任何地方使用高度/宽度,那么你可以在Game1(public static Viewport)中创建一个静态视口(viewport)并设置ViewportInitialise()/LoadContent()方法;您可以使用 Game1.Viewport 访问它.就我个人而言,我不喜欢这种方式,因为它看起来像“黑客风格”,但它完成了工作。虽然这么说,但我的游戏类中通常有一个静态随机类:)!

关于c# - 如何在其他类中使用 ScreenWidth?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12547865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com