Based on my experience, I would choose one platform for writing your logic, and then, on another platform, create an appropriate implementation with conversions to the native types of the platform. It makes no sense to develop and record a third implementation, and then do conversions on both platforms!
All platforms are equal, I probably would prefer XNA, as you can grab the open source implementation from MonoGame or (ultimately) ExEn and use this.
However, in practice, I think that it is probably best for you to start working with the platform on which you intend to develop (XNA or Unity), and then create your level of compatibility when you really need it.
source share