把现有Unity3d游戏向Windows Phone 8.1移植(类库兼容)
来源:互联网 发布:企业开淘宝店怎样记账 编辑:程序博客网 时间:2024/04/29 05:01
关系图表:
- .NET CLR 是完整的微软的 .NET Framework Runtime;
- .NET For Store Apps 是用于 Windows 8.1 Apps 及 Windows Phone 8.1 Apps 的.NET的子集;
- Mono 是官方的Mono Runtime;
- Unity's Mono 是Mono自己定制的用于嵌入自己引擎的Mono;
- Windows Runtime 是微软新一代的 Native Runtime;
矛盾根源
.NET for Store Apps 是 .NET CLR 的儿子,但是却自宫的厉害。而野生的Mono只延续了.NET CLR 2.0的香火。在Windows Phone上,虽然没有新儿子长得高,但却更壮实。
反而野生的Mono能够在IOS,Android上都能立足,微软自家的新儿子把ADO.NET这种利器都给阉了。
更甚之,自己的新儿子也快要被自己掐死了,取而代之的是Windows Runtime。
具体体现
- Mono 的类存在,.NET for Store Apps 中不存在,Windows Runtime中也不存在;
- Mono 的类存在,.NET for Store Apps 中不存在,Windows Runtime中存在,需要改写接口(因为全都是异步);
- Mono 的类存在,.NET for Store Apps 中也存在,但具体的接口方法不存在,需要写扩展方法或自己实现(如WinRTLegacy)。
- Mono 的类存在,Unity's的Mono中不存在,需要自己实现。
不兼容接口列表
- System.Collections.ArrayList
- System.Collections.Hashtable
- System.Collections.Queue
- System.Collections.SortedList
- System.Collections.Stack
- System.Collections.Specialized.HybridDictionary
- System.Collections.Specialized.ListDictionary
- System.Collections.Specialized.NameValueCollection
- System.Collections.Specialized.OrderedDictionary
- System.Collections.Specialized.StringCollection
- System.IO.Directory => Windows.Storage
- System.IO.File => Windows.Storage
- System.IO.FileStream => Windows.Storage
- System.Xml.XmlDocument
- System.Xml.XmlTextReader
- System.Xml.XmlTextWriter
- System.Net.TCPClient ==>Windows.Networking.Sockets 或者 第三方的 Photon
- Sysmte.Cryptography ==>Windows.Security.Cryptography 或 UnityEngine.Windows for MD5 and SHA1
- NGUI
- Toolkit2D
WinRTLegacy实现了一些可兼容的接口:
- Extention methods Close() for most System.IO classes (alternatively you can use Dispose(), which is available on both Mono and .NET for Windows Store Apps)
- WinRTLegacy.TypeExtensions has methods GetConstructor(), GetMethod(), GetProperty() for System.Type
- WinRTLegacy.IO.StreamReader class, that is compatible with Mono System.IO.StreamReader
- WinRTLegacy.IO.StreamWriter class, that is compatible with Mono System.IO.StreamWriter
- WinRTLegacy.Xml.XmlReader class, that is compatible with Mono System.Xml.XmlReader
- WinRTLegacy.Xml.XmlWriter class, that is compatible with Mono System.Xml.XmlWriter
- WindowsRuntimeStreamExtensions 把 WinRT stream 转换成 .NET stream
解决方法
要解决几者之间的冲突,可以用条件编译来区分不同平台使用的代码:
#if NETFX_CORE && UNITY_METRO && !UNITY_EDITOR using LegacySystem.IO; #else using System.IO; #endif
0 0
- 把现有Unity3d游戏向Windows Phone 8.1移植(类库兼容)
- 把现有Unity3d游戏向Windows Phone 8.1移植(基础原理)
- 把现有Unity3d游戏向Windows Phone 8.1移植(基础)
- 把现有Unity3d游戏向Windows Phone 8.1移植(配置)
- 把现有Unity3d游戏向Windows Phone 8.1移植(宏编译)
- 把现有Unity3d游戏向Windows Phone 8.1移植(编译顺序)
- Silverlight.XNA(C#)跨平台3D游戏研发手记:(六)向Windows Phone移植之框架构建
- Silverlight.XNA(C#)跨平台3D游戏研发手记:(七)向Windows Phone移植之双向交互
- 将现有C++代码移植到Windows 8/Windows Phone 8
- Unity游戏移植到Windows Phone文章索引
- Silverlight.XNA(C#)跨平台3D游戏研发手记:(八)向Windows Phone移植之2D跨平台迁移
- C/C++ Windows移植到Linux兼容库移植
- 将boost库移植到windows phone 8 平台
- 向Windows Phone应用商店(App Hub)提交应用
- Windows Phone 7开发海盗游戏(有源码)
- 如何添加AdMob广告到现有的Unity3D ios游戏
- 如何添加AdMob广告到现有的Unity3D ios游戏
- 如何添加AdMob广告到现有的Unity3D ios游戏
- android应用多线程守护让你很难杀死它
- android学习之利用MediaPlayer制作音乐播放器
- 校园助手APP--昨天看代码发现了一个好东西——UncaughtExceptionHandler
- 不知道的JavaScript Console调试命令
- 脚本之查询曾经在某个表上执行过的所有SQL
- 把现有Unity3d游戏向Windows Phone 8.1移植(类库兼容)
- AndEngine 入门---《Android游戏开发实践指南》带来的困扰(一)
- 你知道输出结果么?
- Python 代码调试技巧
- flume参考手册
- ImageView 使用研究
- WPF学习 第十一章2 触发器
- wcscpy与_tcscpy关系 strcpy_s与strcpy比较
- php计划任务php中的ignore_user_abort实现计划任务