[英]Public variable not accessible in my classes
我正在使用XNA框架制作第一个游戏。 在它的主要游戏类( Breakout.cs
)中,我这样写:
public int screenHeight;
public int screenWidth;
并在Initialize
方法中:
this.screenHeight = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height;
this.screenWidth = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Width;
但是,当我尝试从我的Paddle
类访问它时,出现此错误:
The name 'screenWidth' does not exist in the current context
我一直认为将变量设置为public可以在任何地方访问它?
感谢您的帮助,谢谢。
我对XNA并不熟悉(尽管我一直想研究它),但是听起来您正在尝试从另一个类中引用一个类的成员。 为此,您必须实际引用第一类。 您说过在主游戏类中声明了screenHeight和screenWidth,但是随后您说您试图在Paddle类中访问它们。 但是,如果使用“ this”,则无论如何调用,您都只能访问Paddle的成员,而不能访问“ main game”类的成员。 如果要查看其主要成员,则需要引用一些对主游戏类的引用(而不是“ this”)。
例子:
错误:
class MyGame
{
public int screenWidth;
public int screenHeight;
void MainLoop()
{
Paddle p = new Paddle();
}
}
class Paddle
{
void Initialize()
{
int w = screenWidth;
int h = screenHeight;
}
}
更好:
class MyGame
{
public int screenWidth;
public int screenHeight;
void MainLoop()
{
Paddle p = new Paddle(this);
}
}
class Paddle
{
MyGame game;
public Paddle(MyGame game)
{
this.game = game;
}
void Initialize()
{
int w = game.screenWidth;
int h = game.screenHeight;
}
}
我一直认为将变量设置为public可以使其在任何地方都可以访问?
public
使该字段可从其他类访问,但是您仍然需要对该实例的引用 。 由于需要,在Paddle
类中的某个位置应该存在对Breakout
的引用。 例如,通过在实例化Paddle
时分配一个名为Breakout
类型的字段。 然后,可以从Paddle
调用breakout.screenHeight
。
另一种选择是使“ Breakout
成为一个单例(您还会拥有更多吗?)。 构造一个静态字段并在其中存储Breakout实例。 然后公开一个Instance
属性:
private static Breakout instance = new Breakout();
public static Breakout Instance
{
get { return instance; }
}
然后从Paddle
:
Breakout.Instance.screenHeight
不确定您是否要instance
在intiailizer中instance
化Breakout
,因为我不确定当前如何实例化您的游戏类。
您需要创建一个Breakout类的实例。
Breakout breakout = new Breakout();
然后,您可以访问该对象的公共字段。
int height = breakout.screenHeight;
使其成为公共静态
SOOOO ...
public static int screenWidth;
然后只写paddle.maxY = Breakout.screenWidth;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.