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教程文章由游戏蛮牛unity3d博客整理推荐

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值