gpt4 book ai didi

C# XNA 不一致的可访问性

转载 作者:太空宇宙 更新时间:2023-11-03 18:42:26 25 4
gpt4 key购买 nike

这一定是我没有得到的非常简单的东西,但这是我的代码:

    public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
WorldManager worldManager;
Player m_player = new Player(new Point(30, 15));

protected override void Initialize()
{
worldManager = new WorldManager(this, m_player);
Components.Add(worldManager);
base.Initialize();
}

...

现在在 WorldManage 中:

public class WorldManager : Microsoft.Xna.Framework.DrawableGameComponent
{
SpriteBatch spriteBatch;
//UserControlledTile player;
Player player;
List<Tile> tileList = new List<Tile>();

World world;

SpriteFont testFont;

public WorldManager(Game game, Player player)
: base(game)
{
this.player = player;
world = new World();
}

我得到这个错误:

Error   1   Inconsistent accessibility: parameter type 'WindowsGame2.Player' is less accessible than method 'WindowsGame2.WorldManager.WorldManager(Microsoft.Xna.Framework.Game, WindowsGame2.Player)' D:\dropbox\Dropbox\Projects\WindowsGame2\WindowsGame2\WindowsGame2\WorldManager.cs  28  16  WindowsGame2

这是播放器类:

class Player : Character
{

public Player(Point startLoc)
{
base.Position = startLoc;
base.CharacterTile = new UserControlledTile(new Point(20, 15), Color.Yellow, "X");
base.Name = "Hero";
base.Attack = 1;
base.Defense = 1;
base.HP = 20;
base.Level = 1;
} //end constructor

public override void Update(GameTime gameTime)
{
//player has already moved
if (hasMoved)
{
prevGameTime += gameTime.ElapsedGameTime.Milliseconds;

if (prevGameTime > timeBetweenMove)
{
hasMoved = false;
prevGameTime = 0;
}
return;
}

KeyboardState keyboardState = Keyboard.GetState();
if (keyboardState.IsKeyDown(Keys.Left))
{
m_position.X--;
hasMoved = true;
}
else if (keyboardState.IsKeyDown(Keys.Right))
{
m_position.X++;
hasMoved = true;
}
else if (keyboardState.IsKeyDown(Keys.Up))
{
m_position.Y--;
hasMoved = true;
}
else if (keyboardState.IsKeyDown(Keys.Down))
{
m_position.Y++;
hasMoved = true;
}

if (m_position.X < 0)
m_position.X = 0;
if (m_position.X > 56)
m_position.X = 56;
if (m_position.Y < 0)
m_position.Y = 0;
if (m_position.Y > 32)
m_position.Y = 32;


m_CharacterTile.Update(gameTime, m_position);
}

public override void Draw(GameTime gameTime, SpriteBatch spriteBatch, SpriteFont font)
{
m_CharacterTile.Draw(gameTime, spriteBatch, font);
}


}//end class

我还在学习 C#,但它似乎来自 Java,我不明白是什么导致了这个问题......

最佳答案

这意味着您的 Player 类不是公共(public)的,并且您在具有 Player 类型参数的公共(public)类中声明了一个公共(public)方法。

方法可访问性不一致,因为有人可能会调用您的构造函数,因为它是公共(public)的,但无法传递其中一个参数,因为它不是。

关于C# XNA 不一致的可访问性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7488184/

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