Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

Подготовка вашего приложения к покупкам в приложении (IAP)

В этой главе не описывается, как интегрировать вашу игру с Apple StoreKit API. Предполагается, что у вас уже есть интеграция с StoreKit через плагин собственного кода.

Документация Apple StoreKit определяет четыре типа продуктов, которые можно продавать с помощью процесса Покупка в приложении:

  • Content
  • Functionality
  • Services
  • Subscriptions

В этой главе рассматривается только первый случай и основное внимание уделяется концепции загружаемого контента. AssetBundle рекомендуются для реализации загружаемого контента в Unity, и здесь будет рассмотрено как создание, так и использование AssetBundle во время выполнения.

Экспорт ваших ресурсов для использования на iOS

Иногда полезно поддерживать отдельные проекты для основного приложения и загружаемых пакетов AssetBundles, которые оно будет использовать. Однако следует отметить, что все скрипты, на которые ссылаются объекты в AssetBundle, должны присутствовать в основном исполняемом файле игры. Проект, который вы используете для создания AssetBundle, должен иметь iOSмобильную операционную систему Apple. Подробнее
Увидеть в Словарь
выбранную цель сборки, поскольку содержимое файлов AssetBundle не совместимость между iOS и другими платформами.

AssetBundles создаются с помощью редактора скриптовфрагмента кода, который позволяет создавать собственные компоненты, запускать игровые события, изменять Свойства компонента с течением времени и реагировать на ввод пользователя любым удобным для вас способом. Подробнее
См. в Словарь
— простой пример приведен ниже:

using UnityEngine; using UnityEditor; public class ExportBundle : MonoBehaviour { [MenuItem ("Assets/Build AssetBundle From Selection - Track dependencies")] static void DoExport() { string str = 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); } } }

Вы должны сохранить этот код в файле с именем ExportBundle и поместить его в папку с именем Editor (вы можете просто создать ее, если ее еще нет в проект). Сценарий добавит пункт меню под названием Build AssetBundle From Selection — Track dependencies в меню Assets в редакторе.

Контент, который вы хотите включить в комплект, должен быть подготовлен в виде готовых элементов. Выберите префаб в представлении «Проект», а затем выберите Assets > Build AssetBundle From Selection — Track dependencies (т. е. пункт меню, добавленный сценарием ExportBundle). Эта команда вызовет диалоговое окно сохранения, в котором вы сможете выбрать имя и расположение файла AssetBundle.

Загрузка ваших ресурсов на iOS

Примечание. Apple может изменить расположение папок, в которые вам разрешено записывать данные. Всегда проверяйте последнюю версию документации Apple, чтобы убедиться, что ваше приложение соответствует требованиям. Следующий совет был верным на начало 2018 года.

AssetBundles можно загрузить с помощью класса WWW, и после завершения переноса можно будет получить доступ к вложенным ресурсам. Рекомендуемый способ загрузки AssetBundle — использовать LoadFromCacheOrDownload, как показано в следующем примере:

IEnumerator GetAssetBundle() { WWW download; string url = "https://somehost/somepath/someassetbundle.assetbundle"; while (!Caching.ready) yield return null; download = WWW.LoadFromCacheOrDownload(url, 0); yield return download; AssetBundle assetBundle = download.assetBundle; if (assetBundle != null) { // Alternatively you can also load an asset by name (assetBundle.Load("my asset name")) Object go = assetBundle.mainAsset; if (go != null) Instantiate(go); else Debug.Log("Couldn't load resource"); } else { Debug.Log("Couldn't load resource"); } }

Загруженные файлы набора ресурсов хранятся в папке Library изолированной программной среды приложения iOS, и для них установлен флаг Без резервного копирования. Это означает, что ОС не удалит эти файлы случайно, и эти файлы не будут скопированы в iCloud.

Если вам нужно выбрать, где именно хранится файл AssetBundle, вы можете использовать стандартную загрузку из WWW (т. е. просто использовать конструктор вместо LoadFromCacheOrDownload), а затем сохранить загруженные данные на диск с помощью файлового API .NET. Вы можете сохранить необходимые файлы в папку Application.temporaryCachePath (хранится в Library/Caches, которая регулярно очищается) ОС) или папку Application.persistentDataPath (хранится в Документах и не очищается ОС). Вы должны установить флаг No Backup для этих файлов с iOS.Device.SetNoBackupFlag, чтобы предотвратить их резервное копирование. в iCloud.

Примечание. Если вы не установите флажок Без резервного копирования, ваше приложение может быть отклонено при отправке в App Store.

Вы можете получить доступ к сохраненным файлам, создав объект WWW с URL-адресом в форме file:///pathtoyourapplication/Library/savedassetbundle.assetbundle:-

string cachedAssetBundle = Application.temporaryCachePath + "/savedassetbundle.assetbundle"; System.IO.FileStream cache = new System.IO.FileStream(cachedAssetBundle, System.IO.FileMode.Create); cache.Write(download.bytes, 0, download.bytes.Length); cache.Close(); iOS.Device.SetNoBackupFlag(cachedAssetBundle); Debug.Log("Cache saved: " + cachedAssetBundle);

Примечание. Вы можете проверить чтение сохраненных файлов в папке "Документы", если вы включите общий доступ к файлам (настройка UIFileSharingEnabled значение true в вашем Info.plist позволяет вам получить доступ к папке Documents из iTunes). Обратите внимание, что содержимое папки «Документы» кэшируется в iCloud, поэтому вам не следует использовать это место для хранения AssetBundles в окончательной сборке, которая будет отправлена. См. Основы файловой системы в документации Apple iOS. для получения дополнительной информации.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
Руководство Unity 2021.3