0

そこで、Visual Studio 2012 at School で完璧に動作するこのプログラムを作成しようとしています。

しかし、私が家にいるとき、このThrown ExceptionエラーがPublic Game1().

プログラムを実際に実行して終了できるように、誰かがこれを手伝ってくれることを願っています。

コール スタックは次のとおりです。

System.NullReferenceException: オブジェクト参照が Microsoft.Xna.Framework.OpenTKGameWindow.Initialize () [0x00000] のオブジェクトのインスタンスに設定されていません。 0 at Microsoft.Xna.Framework.OpenTKGamePlatform..ctor (Microsoft.Xna.Framework.Game game) [0x00000] in :0 at Microsoft.Xna.Framework.GamePlatform.Create (Microsoft.Xna.Framework.Game game) [0x00000] ] in :0 at Microsoft.Xna.Framework.Game..ctor () [0x00000] in :0 at MonoGameTest.Game1..ctor () [0x00023] in /Users/sebnabt/Projects/MonoGameTest/MonoGameTest/Game1.cs :38 at MonoGameTest.Program.Main () [0x00001] in /Users/sebnabt/Projects/MonoGameTest/MonoGameTest/Program.cs:19

そして私のコード:

<!-- language: lang-cs -->

region Using Statements
using System; 
using System.Collections.Generic; 
using System.Linq; 

using Microsoft.Xna.Framework; 
using Microsoft.Xna.Framework.Graphics; 
using Microsoft.Xna.Framework.Storage; 
using Microsoft.Xna.Framework.Input;
endregion

namespace MonoGameTest 
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Game
{
 GraphicsDeviceManager graphics;
 SpriteBatch spriteBatch;

 // Maps user keys to display colors
 Dictionary<Keys, Color> key_to_color = new Dictionary<Keys, Color>();

 // these are the colors guessed by the user, so far.
 List<Color>[] player_colors = new List<Color>[10];

 // these are the keys that correspond to a dot color
 List<Keys> color_letters = new List<Keys>();

 Texture2D dot_picture;

 KeyboardState old_keyboard_state;

 int row;        

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

     base.Initialize ();
 } 

 /// <summary>
 /// Allows the game to perform any initialization it needs to before starting to run.
 /// This is where it can query for any required services and load any non-graphic
 /// related content.  Calling base.Initialize will enumerate through any components
 /// and initialize them as well.
 /// </summary>
 /// 
 /// // screen constants
 const int SCREEN_WIDTH = 640;
 const int SCREEN_HEIGHT = 480;


 protected override void Initialize()
 {
     row = 0;
     // back buffer
     graphics.PreferredBackBufferHeight = SCREEN_HEIGHT;
     graphics.PreferredBackBufferWidth = SCREEN_WIDTH;
     graphics.PreferMultiSampling = false;
     graphics.ApplyChanges();
     base.Initialize();

     // initialize the color dictionary
     key_to_color.Add(Keys.R, Color.Red);
     key_to_color.Add(Keys.G, Color.Green);
     key_to_color.Add(Keys.B, Color.Blue);
     key_to_color.Add(Keys.Y, Color.Yellow);

     color_letters = new List<Keys>();
     foreach (Keys letter in key_to_color.Keys)
     {
        color_letters.Add(letter);
     }

  }

  /// <summary>
  /// LoadContent will be called once per game and is the place to load
  /// all of your content.
  /// </summary>
  protected override void LoadContent()
  {
    // Create a new SpriteBatch, which can be used to draw textures.
    spriteBatch = new SpriteBatch(GraphicsDevice);

    // load our textures
    dot_picture = Content.Load<Texture2D>(@"media\ball");
  }

  /// <summary>
  /// Allows the game to run logic such as updating the world,
  /// checking for collisions, gathering input, and playing audio.
  /// </summary>
  /// <param name="gameTime">Provides a snapshot of timing values.</param>
  protected override void Update(GameTime gameTime)
  {
    // get keyboard state once per frame
    KeyboardState keyState = Keyboard.GetState();

    // exit the game?
    if (keyState.IsKeyDown(Keys.Escape))
    {
        this.Exit();
    }

    // erase list of player colors?
    else if (keyState.IsKeyDown(Keys.Space))
    {
        player_colors[this.row].Clear();
    }

    // player pressed a color key?
    else {
        foreach (Keys letter in color_letters)
        {
            if (key_was_released(letter, keyState))
            {
                add_color(letter);  
            }
            if (this.player_colors [row].Count () >= 4) {
                this.row = this.row + 1;
            }
        }
    }



    old_keyboard_state = keyState;

    base.Update(gameTime);
}

protected override void UnloadContent() {

}

bool key_was_released(Keys key, KeyboardState new_state)
{
    return old_keyboard_state.IsKeyDown(key) && 
        new_state.         IsKeyUp  (key);
}

void add_color(Keys key)
{
    Color color = key_to_color[key];
    if (player_colors[this.row].Count() < 4)
    {
        player_colors[this.row].Add(color);
    }
}
/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
    graphics.GraphicsDevice.Clear (Color.CornflowerBlue);

    // draw typical sprites
    spriteBatch.Begin ();
    draw_player_colors (spriteBatch);
    spriteBatch.End ();

    base.Draw (gameTime);
}

protected void draw_player_colors(SpriteBatch batch)
{
    for (int current_row = 0; current_row < 10; current_row++) {
        for (int column = 0; column < player_colors[current_row].Count(); column++) {
            int x = 100 + column * 70;
            int y = 100 + column * 70;
            Vector2 loc = new Vector2 (x, y);
            Color c = player_colors[current_row].ElementAt (column);
            batch.Draw (dot_picture, loc, c);
        }
    }
}
}

}

最新のエラー:

わずかに機能するようになったように見えますが、次の基本テンプレートでエラーが発生しています。logoTexture = Content.Load<Texture2D>("logo");

エラーは以下になります

Microsoft.Xna.Framework.Content.ContentLoadException: ロゴ アセットを非コンテンツ ファイルとして読み込めませんでした! ---> System.Exception: ディレクトリが見つかりませんでした。---> System.Exception: パス "/Users/sebnabt/Projects/BSMac/BSMac/bin/Debug/BSMac.app/Contents/Resources/Content/logo.xnb" の一部が見つかりませんでした。/private/tmp/source/bockbuild-xamarin/profiles/ の System.IO.FileStream..ctor (System.String パス、FileMode モード、FileAccess アクセス、FileShare 共有、Int32 bufferSize、ブール型匿名、FileOptions オプション) [0x001c6] mono-mac-xamarin-no-pcl/build-root/mono-3.2.0/mcs/class/corlib/System.IO/FileStream.cs:266 at System.IO.FileStream..ctor (System.String パス、 FileMode モード、FileAccess アクセス、
/private/tmp/source/bockbuild-xamarin/profiles/mono-mac-xamarin-no-pcl/build-root/mono-3.2.0 の System.IO.File.OpenRead (System.String パス) [0x00000] で/mcs/class/corlib/System.IO/File.cs:341 at Microsoft.Xna.Framework.TitleContainer.OpenStream (System.String name) [0x00000] in :0 at Microsoft.Xna.Framework.Content.ContentManager.OpenStream (System.String assetName) [0x00000] in :0 --- 内部例外スタック トレースの終わり --- at Microsoft.Xna.Framework.Content.ContentManager.OpenStream (System.String assetName) [0x00000] in :0 at Microsoft .Xna.Framework.Content.ContentManager.ReadAsset[Texture2D] (System.String assetName, System.Action1 recordDisposableObject) [0x00000] in <filename unknown>:0 --- End of inner exception stack trace --- at at Microsoft.Xna.Framework.Content.ContentManager.ReadAsset<Microsoft.Xna.Framework.Graphics.Texture2D> (string,System.Action1) <0x0076b> at at Microsoft.Xna.Framework.Content.ContentManager.Load (string) <0x0020b> at BSMac.Game1.LoadContent () [0x00023] in /Users/sebnabt/Projects/BSMac/BSMac/Game1.cs :70 at Microsoft.Xna.Framework.Game.Initialize () at BSMac.Game1.Initialize () [0x00002] in /Users/sebnabt/Projects/BSMac/BSMac/Game1.cs:57 at Microsoft.Xna.Framework .Game.DoInitialize ()
Microsoft.Xna.Framework.Game.Run (Microsoft.Xna.Framework.GameRunBehavior) で Microsoft.Xna.Framework.Game.Run () で BSMac.AppDelegate.FinishedLaunching (MonoMac.Foundation.NSObject) [0x00012] で/Users/sebnabt/Projects/BSMac/BSMac/Main.cs:34 at at (wrapper dynamic-method) object.[BSMac.AppDelegate.Void FinishedLaunching(MonoMac.Foundation.NSObject)] (MonoMac.Foundation.NSObject,MonoMac. ObjCRuntime.Selector,MonoMac.Foundation.NSObject) at (ラッパー ネイティブからマネージド) object.[BSMac.AppDelegate.Void FinishedLaunching(MonoMac.Foundation.NSObject)] (MonoMac.Foundation.NSObject,MonoMac.ObjCRuntime.Selector, MonoMac.Foundation.NSObject) at at (wrapper managed-to-native) MonoMac.AppKit.NSApplication.NSApplicationMain (int,string[]) <0x00003> at at MonoMac.AppKit.NSApplication.Main (string[]) at BSMac.Program.Main (string[]) [0x0001d] in /Users/sebnabt/Projects/BSMac/BSMac/Main.cs:20 at

4

1 に答える 1

0

Xamarin Studio でビルドしていますか? 数日前の質問で説明したのと同じ問題が発生していると思います。そこで私の答えを見てください:https://stackoverflow.com/a/18798311/793449

要約すると、Xamarin Studio は、mac アセンブリではなく WindowsGL フレームワーク アセンブリを選択しています。最新のソース (MonoGame.Framework.MacOS プロジェクト) から MonoGame を自分でビルドし、ゲーム内の参照を変更する必要があります。

于 2013-09-14T04:37:34.823 に答える