XNA and Unity3D developers unite! UnityXNA

Sign in to queue


You all know I have a soft spot in my heart for XNA. Since it first came out and let me create games for my XBox 360, I've been a fanboy of it. You also know that I'm a fanboy of gaming engines, like Unity3D.

So when I saw the two mixed in this proof of concept, a example of running XNA inside of Unity3D (let alone that the Platformer Sample was used), well...

Announcing UnityXNA – XNA Inside Unity3D

I had a theory that it would be straightforward to get XNA games running in Unity3D so I decided to give it a go.

This is a proof of concept showing the Platformer XNA sample running inside Unity3D. Zero code changes have been made to the original game code. Using a mixture of new code and some code from MonoXNA I’ve implemented XNA emulation by having a game object with a script attached run an XNA game performing updates and drawing.

You can see the game in your browser here and download the source here.

Implemented so far:

  1. Basic game loop and GameTime calculation.
  2. ContentManager loads Texture2Ds, SoundEffects and Songs, each wrapping the relevant Unity3D object.
  3. SpriteBatch Draw implemented using a draw queue, specifically created for the purpose. Currently supports colour tinting, source rectangles, and sprite effect flip modes.
  4. SpriteBatch DrawString has limited support, rendering the text in the correct position and with the correct colour.
  5. Support for playing Songs through MediaPlayer and playing SoundEffects
  6. KeyboardStates emulated for a limited set of keys which are mapped from their XNA values to Unity3D KeyCodes.
  7. Zero code changes to the game needed to run Platformer sample

Known issues, immediate areas for improvement:

  1. SpriteFont is not supported, all DrawStrings render with the default GUI Label font.
  2. Frame rate is currently vsync’d at 60 frames per second. When vsync is disabled GameTime is not calculated correctly.
  3. Windows Media Audio (.wma) is not supported by Unity3D, so I’ve converted the sample audio files to Ogg Vorbis (.ogg).
  4. Keyboard input is currently limited to a small set of keys, more mappings between XNA Keys and Unity3D KeyCodes need creating.
  5. Mouse, gamepad and touch input are not currently implemented.

If you're interested in seeing how it's done, check out the source on Github here.

If you just want to see it work, via the Unity3D Web Player, check it out here.image

The Discussion

  • User profile image
    Eric Y

    Wow, please continue with this. This would make it much easier to port XNA games.

  • User profile image

    This looks good ! Can you convert a Unity3d game into XNA as well with this ?

  • User profile image

    @Mark: No, I don't believe so

  • User profile image

    Checkout https://github.com/fehaar/FFWD for that.

  • User profile image

    Hi, this is what I was looking for :)
    I have a finished project in XNA but I want to run it in Unity3D.
    Can you explain a little more how I import my project to Unity and how to structure the files?

    thanks so much

Add Your 2 Cents