Unity 用户手册iOS 开发入门应用程序预备“内购



应用程序预备“内购”
本章的方针并不是评论怎么将您的游戏与 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 类和 file:///pathtoyourapplication/Library/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);

注意:如果启用了文件共享,可以从文件 (Documents) 文件夹测试读取文件。在 Info.plist 文件设置 UIFileSharingEnabled 为 true,您将可以从 iTunes 访问文件 (Documents) 文件夹。注意,文件 (Documents) 内容已缓存至 iCloud,因此这不是保存已发布程序资源包的位置。查阅 Apple iOS 文档中的文件系统基础知识。


本教程文章由游戏蛮牛unity3d教程分享整理推荐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值