Unity游戏开发的流程,Steam的IAP怎么搞

Unity3d&iOS&内购详细流程总汇
这几天做app的内购功能,发现网上找的资料都很老了,基本都是2012年以前的,而且基本都是针对有Object-C基础的写的。作为一个从来没有接触过Object-C和XCode的家伙傻逗表示看起来压力山大。教程基本都是纯Object-C代码,涉及到跟Unity交互的很少,也是花了我不少时间。而且都没有demo!下载的插件又复杂的要死根本看不懂。后来经过不懈的google终于在三天里实现了iap,于是写个总结方便那些跟我一样的纯Object-C新手。
教程已经解释的很清楚的我就不再博客里重复了,主要是整理整个完整的流程然后针对教程没有提到的情况做些讲解。
第一步是申请苹果开发者账号,99刀一年。然后设置你的项目,内功功能并申请一个测试账号用来在sandbox里测试。详细教程请点击
这里遇到了第一个问题,&连不上-.-
解决方法:
然后是第二个问题如何填写BankInfo 还有CNAPS是什么哪里查
如何填写账户信息:
CNAPS地址是银行的一个唯一代码,网上很多教程里给的地址都打不开,这个是绝对可用的
再有就是网银点开里面有个啥银行资料的也有支付行号,不过是几个excel文档要自己搜索,真小气。
ShaDou开户银行遇到点问题,银行发票上的开户银行和网银上的开户银行居然不一致,后来打银行电话得到的那个银行名字查不到支付行号,google也查不到那家银行,估计是改过名字或者搬过家信息没同步更新吧。
反正用找到行号填写账户名是可以用的。
填写账户名的时候填中文名的汉语拼音就可以了,这个也是教程里没提到的。之前填了中文不认,然后打电话给银行银行说什么要开外币账户才有英文账号,其实不用。汉语拼音就可以了。
Xcode代码最开始我参考的是这篇:
不过这篇是2011年的,写的不是很清楚,有些函数也是被Xcode弃用了的旧代码,中间出了些错误页不知道怎么解决。
于是我花了好久终于找到一篇满意的:
这篇有iap流程的图解,每个函数都说的很详细,不过在看这个之前我已经通过前面的学习熟悉了Object-C的基本语法,所以看起来终于不会一头雾水了。&
之前看很多教程里还有一个错误就是说 iOS跟
Unity通信必须用.mm也就是Object-C++脚本,后来我看了下文档发现不用。
误会估计是中文文档翻译的时候造成的,里面有个.mm格式的例子:。
然后很多人就以为必须用.mm格式才可以跟Unity通信。 不是的,看原版就知道Object-C的.m格式也可以用,而且不用写
extern "C" , 更方便直接就可以用,所以U官方也就没给例子。大家直接用.m的就可以了。
iOS 跟 Unity 通信的话 一个是函数可以返回基本的 int
bool之类的,还有一个就是UnitySendMessage函数,可以传字符串。
然后一个就是导入库,使用内购功能需要在XCode 里面导入 StoreKit 库。导入方法:
坑爹的就是每次编译xcode都需要导入一次......
demo下载地址
百度网盘 :&
里面包含一个cs 文件
IAPExample.cs &使用例子,脚本
四个插件文件在Plugin/IOS下面
IAPInterface.h
IAPInterface.m Object-C 文件, unity跟xcode的接口
IAPManager.h
IAPManager.m Object-C 文件,处理内购并回调unity函数。
处理过程参考的里的内容。
调用外部函数应该不用说了吧?
using System.Runtime.InteropS
[DllImport("__Internal")]
private static extern xxx XXX(xx);
不会的同学看Unity手册 :
我写了几个我认为常用的接口
Object-C 接口
IAPInterface.m
void&InitIAPManager();//初始化,设置事件监听
bool&IsProductAvailable();//返回玩家是否开启IAP内购
void&RequstProductInfo(void&*p);//输入商品key列表
获取商品信息
void&BuyProduct(void&*p);//输入商品key
iOS 返回到Unity的接口
IAPExample.cs
void&ShowProductList(string&s);//获取xcode返回的一个product信息
void&ProvideContent(string&s);//获取xcode返回的商品回执
至于错误提示可以根据需要是直接由Xcode做还是返回到Untiy之类的处理。
我是直接在Xcode里做了。想要在unity里处理的同学就照着这个自己写就好了.
因为技术有限,所以做的比较糙。这个工程只能编译后在真机上连接xcode跑,u里是跑不起来的。
详细功能在IAPManager.m里实现,IAPInterface.m是给Unity调用的接口。
1&IAPManager&*iapManager&=&
3&void&InitIAPManager(){
&iapManager&=&[[IAPManager&alloc]&init];
&[iapManager attachObserver];
InitIAPManager函数初始化了一个IAPManager类,同时调用了IAPManager的attachObserver函数,添加了一个监听事件。这个推荐在游戏开始的时候就调用,教程里面有说可以处理之前未完成的消息。
IsProductAvailable 很简单不说了。
1&void&RequstProductInfo(void&*p){
&NSString&*list&=&[NSString&stringWithUTF8String:p];
&NSLog(@"productKey:%@",list);
&[iapManager
requestProductData:list];
RequestProductInfo 这里涉及到把 u 的string字符串转成xcode常用的NSString字符串。
U的脚本需要是UTF8格式如果你直接把商品的Key写在里面。
我设计的格式是用"\t"制表符分割每个key,使用方法:
1&RequstProductInfo("com.dollar.one\tcom.dollar.two");
这边com.dllar.one
和com.dollar.two是我在itunesconnect里设置的两个商品的key,需要改成你们自己的key,用\t分割每个key。
当苹果返回商品信息时,IPAManager会呼叫Unity场景中物体名为“Main”的身上的脚本的
void ShowProductList(string s)
函数,并返回一个商品信息,商品信息参数用\t分割。如果你输入了多个key,就会收到多条ShowProductList信息。实测3g连app延迟大概在1秒~3秒左右。如果你的key错了会在xcode的调试的那个地方报出来而不会收到ShowProduct回调。
1&void&BuyProduct(void&*p){
&[iapManager buyRequest:[NSString
stringWithUTF8String:p]];
BuyProduct函数用来购买一个商品,需要传入一个商品的key,然后IPAManager会呼叫Unity场景中物体名为“Main”的身上的脚本的
void ProvideContent(string s) 函数, 并返回苹果给的商品匿名回执。
这个回执很多教程里都没说,其实要什么base64
重新code一下才能用,我已经写到IPAManager里面处理好了。这个回执需要你自己去跟苹果的服务器确认是否是真实的,防止越狱玩家用
IAP free之类的插件作弊。
回执处理流程看这里:&以及。错误信息一样是打印在xcode的调试台里了。
还有就是注意如果你用的是测试账号,需要去验证,而不是去&验证。
如果你提交app审核,苹果也是用的测试账号,这样就需要你自己去判断回执是不是测试账号。如何判断看这里:&
推荐用自己的服务器发送。 如果用unity的话有可能被破解。
Unity发送验证
1&string&json&=&"{\"receipt-data\":\"+YourReceiptCodeBase64+\"}";
2&WWWForm&wwwForm&=&new&WWWForm();
3&wwwForm.AddField("receipt",json);
4&WWW&www&=&new&WWW("https://sandbox./verifyReceipt",&wwwForm);
一旦你确定回执是正确的,就可以把商品提供给玩家了。
整个购买流程测试大概要2~15秒都有可能。另外就是跟苹果连的时候一开始经常会连不上,各种错误返回之类的,估计是连美国服务器不稳定,不过过一会就好了。一旦玩家点了一个商品,最好做个处理界面不要让玩家重复点击,不然经常返回这个商品已购买但是未提供之类的错误。等待个15秒如果苹果没有响应再弹个连接失败之类的。
有什么不清楚的地方大家可以给我留言,我会持续更新。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。Unity的ios内购IAP实现流程 | Welcome!
我的图书馆
Unity的ios内购IAP实现流程 | Welcome!
转载请注明:WEIGUO GAME
自己实现了下Unity的ios App内购(IAP),由于自己的Unity是普通版本,不是专业版,加上不愿意花钱买in-app 内购插件。
(PS:网上好像有破解的,不过俺还是算了,和国际接轨嘛)
好在整个过程不难
实现流程基本就是这样:
1.首先在unity中创建导出的函数。你可以参考官网上的iPhoneNativeCodeSample例子。
我这里简单给个样子:
public class IAPUnity
& [DllImport ("__Internal")]
& private static extern void _DoIAP ();
&public static void DoIAP()
&&//&只有在iphone上我们才调用这个函数
&&if (Application.platform != RuntimePlatform.OSXEditor)
&&&_DoIAP ();
2.导出工程到Xcode
3. 实现标准的StoreKit的购买请求。这个网上有很多例子,还有官方手册,俺就不写了。
4 在实现中加入:
extern "C"&
&&&& void _DoIAP ()
&&&&&&&& //这里调用你标准请求的相关方法
这样当在Unity里调用IAPUnity的DoIAP 方法的时候,就会顺藤摸瓜的调用这个_DoIAP了,同时在_DoIAP中你又实现了StoreKit内购的内容,于是也就进行了内购。当然我们还需要在你的内购代码里加上额外的unity提供的函数,告诉unity你的内购成功了。
5返还给Unity
在你的标准StoreKit购买的代码里加入UnitySendMessage函数。
比如有类似这样的:
//内购成功了
&& UnitySendMessage("IAPMgr","BuySucceed","")
这里我们用UnitySendMessage从objC向Unity里面的一个IAPMgr名字的对象,调用了这个对象的BuySucceed方法,内容是""
具体用法可以查手册。
经过以上流程,内购就搞定啦。
整个流程说起来比较简单,但是动手做起来还是需要一点时间的。
TA的最新馆藏unity加iap的道具收费怎么做啊,,在网上看的教程晕呼呼的~~
弄了两个星期也没弄明白,求大神指教
要评论请先&或者&
我看网上说要用UnitySendMessage方法,但是这个UnitySendMessage(“Config”, “BuyComplate_CallBack”, [json UTF8String]);方法要写在哪?怎么调用都没说明白~~
:我看网上说要用UnitySendMessage方法,但是这个UnitySendMessage(“Config”, “BuyComplate_CallBack”, );方法要写在哪?怎么调用都没说明白~~ 调用场景中Config物体脚本中的BuyComplate_CallBack方法参数为[json UTF8String]UTF8格式的json串
:调用场景中Config物体脚本中的BuyComplate_CallBack方法参数为UTF8格式的json串 我知道这个方法怎么用,,,但是在哪用我不知道~
你付款成功服务器会告诉你成功了在这个回调函数里调用
:你付款成功服务器会告诉你成功了在这个回调函数里调用 好吧我放弃了,,我下了prime31 skoreKit,他里面自带个demo我想打个包试试,,但是打包老是失败,,我都好哭了,,半个月过去了啊,,,
UnitySendMessage是在JAVA中发送UNITY3D消息来实现,UNITY3D的监听。如果你购买了prime31 skoreKit的插件打包失败是应为该插件对UNITY4.2版本的兼容性没做好。对于prime31这样的插件大公司来说应该会做及时更新的,你从新下载个最近的版本应该就没问题了。如果需要购买三星IAP请点击以下链接(UNITY资源商店唯一三星IAP2.0插件),希望大家能给与支持。
另外出售IOS,Google,Amazon IAP,FaceBook 和Twitter分享插件,Adconoly 和Vungle广告插件,以及Flurry统计插件等。也可以根据用户需要制作冷门插件。 QQ:联系我随时提供相关技术支持。
:UnitySendMessage是在JAVA中发送UNITY3D消息来实现,UNITY3D的监听。如果你购买了prime31 skoreKit的插件打包失败是应为该插件对UNITY4.2版本的兼容性没做好。对于prime31这样的插件大公... 我用的是3.5啊~~~~~~
楼主别听他们忽悠UnitySendMessage(“Config”, “BuyComplate_CallBack”, [json UTF8String]); 这句是IOS OC里的,java里也有类似的;但你要用上这等功能,需要ios 开发者账号,ios设备等等一堆玩意;建议你先研究下 unity3d 和 ios native / java native 的通信。你正在使用的浏览器版本过低,将不能正常浏览和使用知乎。

我要回帖

更多关于 游戏开发学徒是假的吗 的文章

 

随机推荐