文章目录
前言
Unity接入苹果内购前,需要提前配置好产品的内购ID以及拥有苹果账号,关于这个提前准备各位需要自行百度解决(笔者是运维那边配置好了内购ID直接发ID给我使用即可)
一、苹果内购是什么?
大多数游戏在苹果商城下载的游戏,付费时不可避免的都要通过苹果的内购来进行付款(切支付的除外),虽然不可避免的都要接受苹果的抽成,但总得来说,还是相对方便的。那么以下是在Unity中加入内购的方法。
二、Unity接入内购
1.开启内购
1、通过Window->General->Services,打开Unity服务面板。
2、选择In-App Purchasing。
3、如果没有工程ID需要创建,选择是否应用针对13岁以下的儿童。创建了可跳过这步。
4、将Off改成On,即内购开启完成。
图解如下:
2.使用内购
使用内购的方法主要有两种,一种是通过Unity安装好的UnityIAP来创建内购按钮,并且给按钮配置好相应的内购ID,即可使用.第二种是自己写个内购ID管理,然后通过按钮调用点击方法来验证返回ID并给予奖励.(笔者使用的是第二种方法,第一种方法太过繁琐麻烦就没使用和研究了.)
直接创建IAPManager脚本,完整代码如下:
using UnityEngine;
using UnityEngine.Purchasing;
using System;
using System.Collections;
using System.Collections.Generic;
[Serializable]
public class Products //产品类
{
public string id; //产品内购ID
public int productType; //产品类型
}
public class IAPManager : MonoBehaviour, IStoreListener
{
public static IAPManager instance; //单例
public List<Products> products = new List<Products>();//所有产品列表,公有为了方便直接输入
public string publicKey;//游戏的公共密钥,在苹果ITC后台创建APP的时候有个
ConfigurationBuilder builder;
private IStoreController m_Controller;
private IAppleExtensions m_AppleExtensions;
private static bool isInited = false;
private bool isInitFailed = false;
public GameObject wait;//购买产品等待回应时显示的旋转动画,因为要跨场景所以使用的预制体
GameObject waitPanel;//实例化预制体后的对象
public void Awake()
{
if (instance != null)
{
Destroy(gameObject);
return;
}
instance = this;
DontDestroyOnLoad(this);
if (!isInited)
InitPurchase();
}
//初始化内购
void InitPurchase()
{
Debug.