本文へ移動
cccskills
無料GitHub で公開

unity-packages-services

Unity 6 packages and services guide. Use when working with Package Manager, installing/updating packages, scoped registries, or Unity Gaming Services (Authentication, Cloud Save, Analytics, Leaderboards, Matchmaker). Covers essential packages list and version compatibility. Based on Unity 6.3 LTS documentation.

インストール方法を見る

含まれるファイル(2)

  • SKILL.md15.0 KB
  • references/common-packages.md9.0 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Unity Packages and Services Skill

Package Manager Workflow

The Package Manager window (accessed via Window > Package Manager) manages UPM packages, feature sets, and asset packages.

Core Components

  • Navigation panel: Select package contexts (Unity Registry, In Project, My Assets)
  • Search box: Locate packages by name
  • Sort menu: Sort by name or date
  • Filter menu: Narrow results by category or status
  • Details panel: View package info, version, dependencies, and changelog
  • Action buttons: Install, remove, update, and customize packages

Package States

  • Released: Fully tested and verified for the current Unity version
  • Pre-release: Available but not yet fully verified
  • Experimental: Unstable, indicated by a warning badge
  • Built-in: Core Unity features that can be toggled on/off to reduce build size
  • Deprecated: No longer maintained

Installing and Managing Packages

Via Package Manager UI

  1. Open Window > Package Manager
  2. Select Unity Registry to browse available packages
  3. Select a package and click Install
  4. To update: select installed package, choose new version, click Update
  5. To remove: select installed package, click Remove

Via manifest.json

Edit Packages/manifest.json directly to add dependencies:

{
    "dependencies": {
        "com.unity.addressables": "2.9.1",
        "com.unity.cinemachine": "3.1.0",
        "com.unity.inputsystem": "1.19.0"
    }
}

Via Git URL

Add packages from Git repositories:

{
    "dependencies": {
        "com.example.package": "https://github.com/user/repo.git#v1.0.0"
    }
}

Or via the Package Manager UI: click the + button > Add package from git URL.

Package Customization

  • Copy to project: The Manage dropdown allows copying UPM packages to project folders for modification
  • Mutable packages: Local and embedded packages can have their manifests edited directly
  • Built-in toggle: Disable unused built-in packages to reduce build size

Scoped Registries

Scoped registries enable Package Manager to communicate with custom package registry servers, allowing access to multiple package collections simultaneously.

Primary Use Case

Organizations use scoped registries to distribute custom packages internally.

Configuration

Add to Packages/manifest.json:

{
    "scopedRegistries": [
        {
            "name": "My Company Registry",
            "url": "https://npm.mycompany.com",
            "scopes": [
                "com.mycompany",
                "com.mycompany.tools"
            ]
        }
    ],
    "dependencies": {
        "com.mycompany.core-utils": "1.0.0"
    }
}

Configuration Properties

PropertyTypeDescription
nameStringDisplay name shown in Package Manager UI
urlStringnpm-compatible registry server endpoint
scopesArrayPackage namespaces to route to this registry

Scope Matching Rules

  • Exact package name matches take priority
  • Longer namespace matches override shorter ones
  • Unmapped packages default to Unity's official registry
  • Wildcards and glob patterns are not supported
  • Scopes use reverse domain notation (com.example, not @scope)

Registry Compatibility

The registry server must implement the /-/v1/search or /-/all endpoints. Not all npm registries are compatible.

Authentication

For protected registries, configure credentials in your Package Manager user configuration file using npm authentication patterns.

Essential Packages List

Unity 6.3 LTS ships with 133 released (verified) packages. See references/common-packages.md for the full categorized list with IDs and versions.

Most-Used Packages (Quick Reference)

PackageIDVersion
Input Systemcom.unity.inputsystem1.19
Addressablescom.unity.addressables2.9
Cinemachinecom.unity.cinemachine3.1
Burstcom.unity.burst1.8
Collectionscom.unity.collections2.6
Entitiescom.unity.entities1.4
Timelinecom.unity.timeline1.8
Netcode for GameObjectscom.unity.netcode.gameobjects2.10
Localizationcom.unity.localization1.5
ProBuildercom.unity.probuilder6.0
Visual Scriptingcom.unity.visualscripting1.9

Key UGS Packages

PackageID
Authenticationcom.unity.services.authentication
Cloud Savecom.unity.services.cloudsave
Analyticscom.unity.services.analytics
Cloud Codecom.unity.services.cloudcode
Economycom.unity.services.economy
Leaderboardscom.unity.services.leaderboards
In-App Purchasingcom.unity.purchasing
Remote Configcom.unity.remote-config

Unity Gaming Services Overview

Unity Gaming Services (UGS) is a suite of backend services for live game operations. Services include Authentication, Cloud Save, Cloud Code, Analytics, Economy, Leaderboards, Friends, Multiplayer, Matchmaker, and more.

Getting Started with UGS

  1. Link your Unity project to a UGS project in Edit > Project Settings > Services
  2. Install the required service packages via Package Manager
  3. Initialize services in code before using them
using Unity.Services.Core;
using UnityEngine;

public class ServicesInitializer : MonoBehaviour
{
    async void Start()
    {
        await UnityServices.InitializeAsync();
        Debug.Log("Unity Services initialized");
    }
}

Authentication

The Authentication service provides player identity management. Install com.unity.services.authentication.

Sign-In Methods

  • Anonymous: No credentials required, auto-generates player ID
  • Platform-specific: Steam, PlayStation, Xbox, Apple, Google Play, etc.
  • Custom authentication: OAuth/OIDC integration
  • Unity Player Accounts: Cross-platform identity

Anonymous Sign-In

using Unity.Services.Authentication;
using Unity.Services.Core;
using UnityEngine;

public class AuthManager : MonoBehaviour
{
    async void Start()
    {
        await UnityServices.InitializeAsync();

        AuthenticationService.Instance.SignedIn += () =>
        {
            Debug.Log($"Signed in. Player ID: {AuthenticationService.Instance.PlayerId}");
        };

        await AuthenticationService.Instance.SignInAnonymouslyAsync();
    }
}

Session Management

  • Sessions persist automatically across app restarts
  • Access token refreshes automatically
  • Player ID is consistent across sessions for the same device
  • Link multiple sign-in methods to one player ID for cross-platform play

Key API

APIPurpose
AuthenticationService.Instance.SignInAnonymouslyAsync()Anonymous sign-in
AuthenticationService.Instance.PlayerIdGet current player ID
AuthenticationService.Instance.IsSignedInCheck sign-in status
AuthenticationService.Instance.SignOut()Sign out current player
AuthenticationService.Instance.AccessTokenGet current access token

Cloud Save

Cloud Save persists player data and game state to the cloud. Install com.unity.services.cloudsave.

Data Types

  • Player Data: Per-player key-value storage (settings, progress, inventory)
  • Game Data: Shared data across all players (leaderboard snapshots, game config)

Saving and Loading Data

using Unity.Services.CloudSave;
using Unity.Services.Core;
using Unity.Services.Authentication;
using UnityEngine;
using System.Collections.Generic;

public class CloudSaveManager : MonoBehaviour
{
    async void Start()
    {
        await UnityServices.InitializeAsync();
        await AuthenticationService.Instance.SignInAnonymouslyAsync();

        // Save data
        var data = new Dictionary<string, object>
        {
            { "playerLevel", 5 },
            { "playerName", "Hero" },
            { "highScore", 12500 }
        };
        await CloudSaveService.Instance.Data.Player.SaveAsync(data);
        Debug.Log("Data saved to cloud");

        // Load data
        var keys = new HashSet<string> { "playerLevel", "highScore" };
        var loadedData = await CloudSaveService.Instance.Data.Player.LoadAsync(keys);

        if (loadedData.TryGetValue("playerLevel", out var levelItem))
        {
            int level = levelItem.Value.GetAs<int>();
            Debug.Log($"Player level: {level}");
        }
    }
}

Key API

APIPurpose
CloudSaveService.Instance.Data.Player.SaveAsync()Save player key-value data
CloudSaveService.Instance.Data.Player.LoadAsync()Load player data by keys
CloudSaveService.Instance.Data.Player.LoadAllAsync()Load all player data
CloudSaveService.Instance.Data.Player.DeleteAsync()Delete specific keys

Analytics

Unity Analytics tracks player behavior and game events. Install com.unity.services.analytics.

Event Types

  • Standard Events: Pre-defined events (e.g., level completion, transaction)
  • Custom Events: Developer-defined events with custom parameters

Recording Events

using Unity.Services.Analytics;
using Unity.Services.Core;
using UnityEngine;

public class AnalyticsManager : MonoBehaviour
{
    async void Start()
    {
        await UnityServices.InitializeAsync();
        AnalyticsService.Instance.StartDataCollection();
    }

    public void RecordLevelComplete(int level, float time)
    {
        var parameters = new Dictionary<string, object>
        {
            { "levelIndex", level },
            { "completionTime", time },
            { "livesRemaining", 3 }
        };
        AnalyticsService.Instance.CustomData("levelComplete", parameters);
    }

    public void RecordPurchase(string itemId, float price)
    {
        var parameters = new Dictionary<string, object>
        {
            { "itemId", itemId },
            { "price", price },
            { "currency", "USD" }
        };
        AnalyticsService.Instance.CustomData("itemPurchased", parameters);
    }
}

Data Privacy

  • Call AnalyticsService.Instance.StartDataCollection() after obtaining user consent
  • Comply with GDPR, CCPA, and platform privacy requirements
  • Use AnalyticsService.Instance.StopDataCollection() if user revokes consent

Key API

APIPurpose
AnalyticsService.Instance.StartDataCollection()Begin collecting analytics data
AnalyticsService.Instance.StopDataCollection()Stop collecting data
AnalyticsService.Instance.CustomData()Record a custom event with parameters
AnalyticsService.Instance.Flush()Force-send queued events

Common Patterns

Service Initialization Pattern

using Unity.Services.Core;
using Unity.Services.Authentication;
using UnityEngine;

public class GameBootstrap : MonoBehaviour
{
    async void Awake()
    {
        try
        {
            await UnityServices.InitializeAsync();
            await AuthenticationService.Instance.SignInAnonymouslyAsync();
            Debug.Log($"Player ID: {AuthenticationService.Instance.PlayerId}");

            // Now safe to use Cloud Save, Analytics, etc.
        }
        catch (ServicesInitializationException e)
        {
            Debug.LogError($"Services failed to initialize: {e.Message}");
        }
        catch (AuthenticationException e)
        {
            Debug.LogError($"Authentication failed: {e.Message}");
        }
    }
}

Managing Packages via Script

#if UNITY_EDITOR
using UnityEditor.PackageManager;

public static class PackageHelper
{
    // Install: Client.Add("com.unity.cinemachine@3.1.0");
    // Remove:  Client.Remove("com.unity.cinemachine");
    // List:    Client.List();  // Returns ListRequest, poll IsCompleted
}
#endif

Anti-Patterns

  1. Not initializing UnityServices before using any service. Always call UnityServices.InitializeAsync() first. All UGS services depend on this.

  2. Not authenticating before using Cloud Save or other player-bound services. Authentication is required before accessing per-player data.

  3. Collecting analytics without user consent. Call StartDataCollection() only after obtaining consent. Violating privacy regulations risks legal action and platform removal.

  4. Storing sensitive data in Cloud Save without encryption. Cloud Save is key-value storage, not a secure vault. Encrypt sensitive data before saving.

  5. Hardcoding package versions in manifest.json without checking compatibility. Always verify package versions are compatible with your Unity version. Use the Package Manager UI to check verified versions.

  6. Installing packages via git URL for production without pinning a version/tag. Always specify a tag or commit hash (e.g., #v1.0.0) to prevent unexpected breaking changes.

  7. Not handling service errors gracefully. UGS calls are async network operations. Always wrap in try/catch and handle offline scenarios.

  8. Using Resources.Load instead of Addressables for dynamic content. Resources folder cannot be updated post-build. Addressables support remote content updates.

  9. Adding scoped registries with overly broad scopes. Broad scopes like com will route many packages to your custom registry. Use specific scopes like com.mycompany.

Key API Quick Reference

APIPurpose
UnityServices.InitializeAsync()Initialize all UGS services
AuthenticationService.InstanceAccess authentication service
CloudSaveService.InstanceAccess cloud save service
AnalyticsService.InstanceAccess analytics service
UnityEditor.PackageManager.Client.Add()Install a package via script
UnityEditor.PackageManager.Client.List()List installed packages
UnityEditor.PackageManager.Client.Remove()Remove a package via script

Related Skills

  • unity-foundations — Core Unity concepts, project setup, and C# scripting basics
  • unity-platforms — Platform targeting, build profiles, and platform-specific optimization

Additional Resources

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

adopt

無料

Brownfield onboarding — audits existing project artifacts for template format compliance (not just existence), classifies gaps by impact, and produces a numbered migration plan. Run this when joining an in-progress project or upgrading from an older template version. Distinct from /project-stage-detect (which checks what exists) — this checks whether what exists will actually work with the template's skills.

日本語の概要は準備中です。原文の説明を表示しています。

IdoCohen560/claude-unity-game-studio222026年7月8日 更新

Creates an Architecture Decision Record (ADR) documenting a significant technical decision, its context, alternatives considered, and consequences. Every major technical choice should have an ADR.

日本語の概要は準備中です。原文の説明を表示しています。

IdoCohen560/claude-unity-game-studio222026年7月8日 更新

Validates completeness and consistency of the project architecture against all GDDs. Builds a traceability matrix mapping every GDD technical requirement to ADRs, identifies coverage gaps, detects cross-ADR conflicts, verifies engine compatibility consistency across all decisions, and produces a PASS/CONCERNS/FAIL verdict. The architecture equivalent of /design-review.

日本語の概要は準備中です。原文の説明を表示しています。

IdoCohen560/claude-unity-game-studio222026年7月8日 更新

art-bible

無料

Guided, section-by-section Art Bible authoring. Creates the visual identity specification that gates all asset production. Run after /brainstorm is approved and before /map-systems or any GDD authoring begins.

日本語の概要は準備中です。原文の説明を表示しています。

IdoCohen560/claude-unity-game-studio222026年7月8日 更新

Audits game assets for compliance with naming conventions, file size budgets, format standards, and pipeline requirements. Identifies orphaned assets, missing references, and standard violations.

日本語の概要は準備中です。原文の説明を表示しています。

IdoCohen560/claude-unity-game-studio222026年7月8日 更新

Generate per-asset visual specifications and AI generation prompts from GDDs, level docs, or character profiles. Produces structured spec files and updates the master asset manifest. Run after art bible and GDD/level design are approved, before production begins.

日本語の概要は準備中です。原文の説明を表示しています。

IdoCohen560/claude-unity-game-studio222026年7月8日 更新

IdoCohen560 のスキルをすべて見る

このスキルの問題を報告する