- 用户指南
- 资源商店 (Asset Store)
- 资源服务器 (Asset Server)(仅限团队许可证)
- 缓存服务器(仅限团队许可证)
- 幕后场景
- 创建游戏
- 运行时实例化预设 (Prefabs)
- 变换 (Transforms)
- 物理
- 添加随机的游戏元素
- 粒子系统(Particle Systems)
- Mecanim 动画系统
- 旧动画系统
- 导航网格 (Navmesh) 和寻路 (Pathfinding)(仅限专业版 (Pro))
- Sound (音频侦听器)
- 游戏界面元素
- 多玩家联网游戏
- iOS 开发入门
- Android 开发入门
- Blackberry 10 开发入门
- Metro:入门指南
- 本地客户端开发入门
- FAQ
- Advanced
- Vector Cookbook
- 资源包(仅限专业版)
- Graphics Features
- 资源数据库 (AssetDatabase)
- 构建播放器管道
- 分析器(仅限专业版)
- 光照贴图快速入门
- 遮挡剔除(仅限专业版)
- 相机使用技巧
- 运行时加载资源
- 通过脚本修改源资源
- 用程序生成网格几何体
- 富文本
- 在 Unity 工程 (Project) 中使用 Mono DLL
- 事件函数的执行顺序
- 移动优化实用指南
- Unity XCode 工程结构
- 优化图形性能
- 减少文件大小
- 理解自动内存管理
- 平台依赖编译
- 泛型函数
- 调试
- 插件(专业版/移动版特有功能)
- 文本场景文件格式(仅限专业版)
- 流媒体资源
- 启动时运行编辑器脚本代码
- 网络模拟
- VisualStudio C 集成
- 分析
- 检查更新
- 安装多版本 Unity
- 故障排除
- Unity 中的阴影
- Unity 中的 IME
- 对集成显卡进行优化
- 网络播放器 (Web Player) 部署
- 使用网络播放器中的信任链系统
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
应用程序准备“内购”
本章的目标并不是讨论如何将您的游戏与 Apple "StoreKit" API 集成。而是假设您已经通过本地代码插件与 "StoreKit" 集成。
Apple "StoreKit" 文档定义了四种可以通过“内购”过程销售的产品:
- 内容 (Content)
- 功能 (Functionality)
- 服务 (Services)
- 认购 (Subscriptions)
本章仅讲述第一例,主要侧重于可下载内容的概念。资源包是可下载内容的理想选择,包括两种情况:
- 如何导出在 iOS 上使用的资源包
- 如何在 iOS 上下载和缓存资源包
请注意,AssetBundles 是一项仅适用于专业版的功能。(基础版)iOS 附加组件的用户将无法在游戏代码中使用资源包。
导出资源供 iOS 使用
可下载内容拥有独立工程是不错的想法,可以让主应用程序自带的内容和稍后下载的内容之间有更好的分离。
请注意:任何包含可下载内容的游戏脚本必须存在于主要可执行文件中。(iOS 所有游戏脚本的所有调用都将提前编译成机械臂组件并包含在 XCode 工程中。)
- 在工程视图内创建编辑器 (Editor) 文件夹。
- 在此处创建 ExportBundle.js 脚本,并写入以下代码:
@MenuItem ("Assets/Build AssetBundle From Selection - Track dependencies") static function ExportBundle(){ var str : String = EditorUtility.SaveFilePanel("Save Bundle...", Application.dataPath, Selection.activeObject.name, "assetbundle"); if (str.Length != 0){ BuildPipeline.BuildAssetBundle(Selection.activeObject, Selection.objects, str, BuildAssetBundleOptions.CompleteAssets, BuildTarget.iPhone); } }
- 设计必须作为预设下载的对象。
- 选择一个需要输出的预设,点击鼠标右键。
如果正确地完成了开始两个步骤,就可以看见 Build AssetBundle From Selection - Track dependencies 内容菜单项。 - 如果想要包含该资源使用的所有内容,选中此菜单项。
- 此时将显示保存对话框,输入想要的资源包文件名称。将自动添加.assetbundle 扩展名。Unity iOS 运行时间仅接受使用相同版本的 Unity 编辑器构建的资源包作为最终应用程序。参阅 BuildPipeline.BuildAssetBundle,了解更多详细信息。
在 iOS 上下载资源包
注意:Apple 可能更改允许您写入数据的文件夹位置。始终检查 Apple 文件以确认您的应用程序符合要求。以下是 2013 年年初正确的建议:
- 资源包可以通过使用 WWW 类下载和加载,并实例化一个主资源。建议使用LoadFromCacheOrDownload 方法下载资源包。以下代码示例显示了如何进行这一操作:
var download : WWW; var url = "http://somehost/somepath/someassetbundle.assetbundle"; download = WWW.LoadFromCacheOrDownload (url, 0); yield download; assetBundle = download.assetBundle; if (assetBundle != null) { // Alternatively you can also load an asset by name (assetBundle.Load("my asset name")) var go : Object = assetBundle.mainAsset; if (go != null) instanced = Instantiate(go); else Debug.Log("Couldn't load resource"); } else { Debug.Log("Couldn't load resource"); }
下载的资源包文件将保存在 iOS 应用程序沙盒的库 (Library)
文件夹中,并设置有无备份 (No Backup) 标记。这意味着 OS 不会意外删除这些文件,且这些文件不会备份到 iCloud。将缓存大小限制保持较低水平是不错的想法。这可以防止您的应用程序占用所有的设备磁盘空间。 - 如果需要对缓存文件进行细粒度控制,可以通过
新 WWW(url)
使用定期 WWW 下载,然后使用 .NET 文件 API 将下载的文件保存到磁盘。可以将需要的文件保存至 Application.temporaryCachePath(库 (Library)/类 (Caches),由 OS 清理)文件夹或者 Application.persistentDataPath(文件,不会由 OS 清理)文件夹。请务必通过 iPhone.SetNoBackupFlag 在这些文件上设置无备份标记,防止其备份至 iCloud。注意:未设置此标记可能导致应用程序提交至 App Store 时被拒绝。如需在将来重新使用这些文件,通过 WWW 类和savedassetbundle.assetbundle
加载即可。示例缓存代码如下:// Code designed for caching on iPhone, cachedAssetBundle path must be different when running in Editor // See code snippet above for getting the path to your Library/Caches folder private var cachedAssetBundle : String = Application.temporaryCachePath + "/savedassetbundle.assetbundle"; var cache = new System.IO.FileStream(cachedAssetBundle, System.IO.FileMode.Create); cache.Write(download.bytes, 0, download.bytes.Length); cache.Close(); iPhone.SetNoBackupFlag(cachedAssetBundle); Debug.Log("Cache saved: " + cachedAssetBundle);
Info.plist
文件设置 UIFileSharingEnabled
为 true,您将可以从 iTunes 访问文件 (Documents) 文件夹。注意,文件 (Documents) 内容已缓存至 iCloud,因此这不是保存已发布程序资源包的位置。查阅 Apple iOS 文档中的文件系统基础知识。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论