-
StoreKit과 백그라운드 애셋으로 게임 내 콘텐츠 활용하기
Steam Asset Converter와 앱 내 구입을 지원할 수 있는 새로운 Unity 플러그인을 사용하여 크로스 플랫폼 개발을 간소화하세요. 필요한 것만 제공할 수 있는 언어별 애셋 팩으로 게임을 더 가볍게 만들고 멋진 플레이어 경험을 선사하는 방법을 알아보세요.
챕터
- 0:01 - Introduction
- 0:33 - Background Assets
- 1:35 - Localized asset packs
- 3:14 - Convert Steam depots to asset packs
- 4:15 - Unity plug-ins
- 5:52 - StoreKit and Background Assets sample code
- 8:25 - Game presence
- 9:10 - Next steps
리소스
관련 비디오
WWDC26
WWDC25
Meet with Apple
WWDC22
-
비디오 검색…
-
-
3:06 - Asset pack manifest for a localized asset pack
// Asset pack manifest { "assetPackID": "voice-english", "downloadPolicy": { /* … */ }, "language": "en-US", "sourceRoot": ".", "fileSelectors": [ /* … */ ], "platforms": [ /* … */ ] //… } -
3:27 - Convert a Steam depot to an asset pack manifest
# Convert a Steam depot to an asset pack manifest xcrun ba-package convert --asset-pack-id voice-english --l en-US --on-demand voice-english.vdf -o voice-english.json -
3:28 - Convert an asset pack manifest to an asset pack archive
# Convert an asset pack manifest to an asset pack archive xcrun ba-package voice-english.json -o voice-english.aar -
5:52 - Fetch and purchase products with the StoreKit plug-in
// Fetch and purchase products with the StoreKit plug-in using UnityEngine; using Apple.StoreKit; async void Start() { var products = await Product.FetchProducts(new[] { "com.thecoast.capecod" }); } -
6:01 - Fetch and purchase products with the StoreKit plug-in
// Fetch and purchase products with the StoreKit plug-in using UnityEngine; using Apple.StoreKit; async void Purchase(Product product) { var result = await product.Purchase(); if (result.Result == PurchaseResult.ResultEnum.Success && result.TransactionVerification.IsVerified) { // Unlock access to purchased content result.TransactionVerification.SafePayload.Finish(); } } -
6:23 - Listen for Transaction updates with the StoreKit plug-in
// Listen for Transaction updates with the StoreKit plug-in using UnityEngine; using Apple.StoreKit; public static class TransactionListener { public static void Initialize() => Transaction.Updates += OnUpdate; async void OnUpdate(VerificationResult<Transaction> result) { if (!result.IsVerified) return; var verifiedTransaction = result.SafePayload; // Consumables are not in CurrentEntitlements, so handle them inline if (verifiedTransaction.ProductType == ProductType.ProductTypeEnum.Consumable) { if (verifiedTransaction.RevocationDate != null) { // Revoke the consumable identified by verifiedTransaction.ProductId } else { // Grant access to the consumable } }else { // Non-consumables and subscriptions: re-read CurrentEntitlements as source of truth await foreach (var verificationResult in Transaction.GetCurrentEntitlements()) { if (!verificationResult.IsVerified) continue; // Grant access to the product } } verifiedTransaction.Finish(); } } -
7:13 - Download asset packs with the Background Assets plug-in
// Download asset packs with the Background Assets plug-in using Apple.BackgroundAssets; using UnityEngine; async void LoadTutorial(string language) { try { string assetPackId = $"tutorial-{language}"; AssetPackManifest manifest = await AssetPackManager.GetManifestAsync(); AssetPack assetPack = manifest.GetAssetPack(assetPackId); CancellationTokenSource tokenSource = new CancellationTokenSource(); _ = Task.Run(async () => { await foreach (AssetPackManager.DownloadStatusUpdate statusUpdate in AssetPackManager.DownloadStatusUpdatesAsync(assetPackId)) { // Update download progress in UI } }, tokenSource.Token); await AssetPackManager.EnsureLocalAvailabilityOfAssetPackAsync(assetPack); tokenSource.Cancel(); // Start tutorial with the locally available assets } catch (Exception exception) { // Handle the exception } }
-
-
- 0:01 - Introduction
New tools for building games on Apple platforms: updates to Background Assets, new Unity plug-ins for In-App Purchase, and ways to enhance your presence on the App Store and Apple Games app.
- 0:33 - Background Assets
Apple-Hosted Managed Background Assets save players time and storage by downloading asset packs only when needed. Now with Apple-hosting, up to 200 GB per app is included in the Developer Program.
- 1:35 - Localized asset packs
Localized asset packs greatly reduce the size of assets that players need to download by allowing the system to identify the player’s preferred language selected in Settings and only deliver assets for your game in that language.
- 3:14 - Convert Steam depots to asset packs
Learn how to bring your Steam depots into asset pack manifests and asset pack archives to ship along with your game on Apple platforms.
- 4:15 - Unity plug-ins
Two new Apple Unity plug-ins: Background Assets and StoreKit expose C# APIs that bridge to the native frameworks. Build and test with Xcode 27, Python 3, and Unity 2022 LTS or later.
- 5:52 - StoreKit and Background Assets sample code
Examples of how to use the C# version of the native StoreKit and Background Assets APIs in your game.
- 8:25 - Game presence
Make your game stand out with new visuals for your product page header and search results.
- 9:10 - Next steps
Ways to go further — upload localized asset packs in App Store Connect to reduce app size, adopt new Unity plug-ins, and highlight features with new image and video assets in the App Store and Apple Games app.