Contents
環境構築と前提条件の確認
ZEPETO ワールドを Unity で開発するには、公式がサポートしている環境を正しく揃えることが最重要です。ここでは 推奨される Unity バージョン と ZEPETO アカウント/Studio のセットアップ手順 を詳述します。正しい環境であれば、SDK のインポートやビルド時に発生しやすいエラーを未然に防げます。
Unity のインストール手順
Unity Hub から推奨バージョン(2020.3 LTS 系)を取得する流れです。以下の手順は、2024 年 6 月時点で公式が提示している最新の LTS バージョンに合わせています。
- Unity Hub のダウンロードとインストール
-
公式サイト(https://unity.com/download)から Unity Hub を取得し、指示通りにインストールします。
-
推奨バージョンの追加
- Hub 起動後、左側メニューの Installs → Add をクリック。
-
バージョン選択画面で「2020.3 LTS」系を探し、2020.3.45f1 以上 にチェックを入れます(2024 年 6 月時点の最新 LTS が 2020.3.45 です)。
-
必要モジュールの選択
- 以下のビルドサポートは必須、またはプロジェクト要件に応じて追加してください。
| モジュール名 | 推奨設定 | 補足 |
|---|---|---|
| Windows Build Support | IL2CPP(デフォルト) | 高速実行が必要な場合に選択 |
| Android Build Support | IL2CPP と Mono の両方をインストール可能 | IL2CPP はパフォーマンス重視、Mono はデバッグや軽量ビルド向け |
| iOS Build Support | 必要に応じて追加 | macOS が必要です |
- プロジェクトの作成
- Hub の Projects タブで New → 3D テンプレート を選択し、任意の名前でプロジェクトを生成します。
ポイント:LTS(Long‑Term Support)版は長期間にわたってバグ修正と互換性が保証されるため、ZEPETO SDK との相性が最も安定します。
ZEPETO アカウント作成・Studio ログイン
ZEPETO の開発プラットフォームである ZEPETO Studio にアクセスできるアカウントは必須です。以下の手順で簡単に取得できます。
- 公式サイト(https://zepeto.me)へ移動し、右上の「サインアップ」からメールアドレスまたは SNS アカウントで登録します。
- 送信された認証メールのリンクをクリックし、アカウントを有効化します。
- ブラウザで ZEPETO Studio(https://studio.zepeto.me)にアクセスし、作成したアカウントでログインします。
- 初回ログイン時に表示される「開発者規約」に同意すると、ダッシュボードが利用可能になります。
ポイント:二要素認証(2FA)を有効化すると、アカウントの安全性が格段に向上します。
ZEPETO World SDK の取得とプロジェクト設定
ZEPETO ワールド開発の核となる 「ZEPETO World SDK」 は、従来の Asset Store からではなく Unity Package Manager(Package Manager)経由で取得するのが公式推奨です。ここでは正しい取得手順とテンプレートプロジェクト生成までを解説します。
Package Manager からのダウンロード
- Unity エディタ上部メニューの Window → Package Manager を開きます。
- 左側リストで My Assets(または Unity Registry)を選択し、検索バーに「ZEPETO World SDK」と入力します。
- 公式パッケージが表示されたら Download → Import をクリック。インポート画面で全項目にチェックを入れ、Import を確定します。
ポイント:Package Manager 経由ならバージョン管理が容易です。最新の安定版はパッケージページ上部に表示されているので、必ず「v2.5.1」以降であることを確認してください(執筆時点の最新版は 2.5.1)。
「ZEPETO Default Project」テンプレート生成
SDK が正しくインポートされると、メニューに ZEPETO → Create Default Project が追加されます。以下の手順でテンプレートを作成します。
- メニューバーから ZEPETO → Create Default Project を選択します。
-
保存先フォルダとプロジェクト名(例:
MyFirstWorld)を入力し、Create ボタンを押します。 -
作成後に自動で新規シーンが開き、以下の設定が適用された状態になります。
| 設定項目 | 推奨値 |
|---|---|
| Platform | Android(iOS も同様に切替可) |
| Build Target | Unity → File → Build Settings → Android |
| ZEPETO SDK Version | 2.5.1(執筆時点の最新安定版) |
| Rendering Pipeline | Built‑in (URP に移行する場合は別途パッケージ追加が必要) |
ポイント:テンプレートには
ZepetoEmulator、ZepetoCameraなどデバッグに必須なコンポーネントがすでに配置されています。削除するとエミュレータが正常に動作しなくなるので注意してください。
シーン構築:Terrain とオブジェクト配置でワールドを作る
実際のゲーム空間は Terrain と 各種 Prefab の組み合わせで形作ります。本節では最小構成のシーンを作りながら、基本的なレイアウト手順とパフォーマンス上の注意点を紹介します。
Terrain の配置と調整
- メニューバーから GameObject → 3D Object → Terrain を選択し、シーンに追加します。
- インスペクタで Terrain Settings を開き、以下のパラメータを設定します(モバイル向けに軽量化した推奨値です)。
| パラメータ | 推奨値 |
|---|---|
| Heightmap Resolution | 513 |
| Base Map Distance | 1500 |
| Detail Resolution | 1024 |
- Paint Terrain ツールでブラシサイズと強さを調整し、起伏を作成します。
- テクスチャは SDK に同梱の
ZEPETO_GrassとZEPETO_Rockをドラッグ&ドロップで割り当てます。
ポイント:モバイルビルドでは Terrain の解像度がフレームレートに直結します。必要最低限のポリゴン数・テクスチャサイズに抑えることがパフォーマンス最適化の第一歩です。
樹木・建物などプリファブ配置例
- Project ウィンドウの
ZEPETO/PrefabsフォルダからTree_Pine.prefabをシーンへドラッグし、自然な位置に配置します。 - 同様に
Building_Simple.prefabを数個配置して、道路や広場をイメージしたレイアウトを作ります。 - 各オブジェクトには自動で Box Collider が付与されるため、Avatar との衝突判定がすぐに有効になります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
// エディタ拡張でサンプルオブジェクトを自動配置する例 #if UNITY_EDITOR using UnityEditor; using UnityEngine; public class WorldAutoPlacer : MonoBehaviour { [MenuItem("ZEPETO/Auto Place Sample Objects")] static void PlaceObjects() { var tree = PrefabUtility.InstantiatePrefab( AssetDatabase.LoadAssetAtPath<GameObject>("Assets/ZEPETO/Prefabs/Tree_Pine.prefab")); tree.transform.position = new Vector3(10, 0, 20); var building = PrefabUtility.InstantiatePrefab( AssetDatabase.LoadAssetAtPath<GameObject>("Assets/ZEPETO/Prefabs/Building_Simple.prefab")); building.transform.position = new Vector3(-15, 0, -5); } } #endif |
ポイント:エディタスクリプトでオブジェクト配置を自動化すると、テストシーン作成に要する工数が大幅に削減できます。
Avatar 用スクリプトの実装とサンプルコード活用
ZEPETO の最大特徴は Avatar が自由に移動し、他プレイヤーやオブジェクトとインタラクトできる点です。ここでは「移動」と「インタラクション」の基本スクリプトを公式サンプルから派生させ、実装手順とデバッグポイントを解説します。
移動スクリプトの追加方法
まず Scripts フォルダを作成し、PlayerMovement.cs を新規作成してください。以下は最新 SDK(v2.5.1)に合わせた実装例です。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
using UnityEngine; using ZEPETO.Character.Controller; public class PlayerMovement : MonoBehaviour { private ZepetoCharacterController _controller; [Header("移動速度 (m/s)")] public float speed = 3.5f; void Awake() { _controller = GetComponent<ZepetoCharacterController>(); if (_controller == null) Debug.LogError("[PlayerMovement] ZepetoCharacterController がアタッチされていません。"); } void Update() { // キーボード入力取得(WASD / 矢印キー) float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); Vector3 dir = new Vector3(h, 0, v).normalized; if (dir.sqrMagnitude > 0.001f) { // カメラの向きに合わせて移動ベクトルを回転 var camForward = Camera.main.transform.forward; camForward.y = 0; // 水平成分だけ使用 var moveDir = Quaternion.LookRotation(camForward) * dir; _controller.Move(moveDir * speed * Time.deltaTime); } } } |
- ZepetoCharacter プレハブ(
Assets/ZEPETO/Prefabs/ZepetoCharacter.prefab)にこのスクリプトをドラッグ&ドロップします。 - 再生ボタンでシーンを実行し、キーボード入力に合わせて Avatar が滑らかに移動すれば完了です。
ポイント:
ZepetoCharacterController.Moveは内部で物理演算を走らせるため、Time.deltaTimeを必ず掛けてフレームレート依存を防ぎます。
インタラクション(近接・クリック)実装
次にオブジェクトと Avatar が衝突した際の反応を作ります。InteractableObject.cs という名前で新規スクリプトを作成し、以下コードを貼り付けてください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
using UnityEngine; using ZEPETO.Character.Controller; [RequireComponent(typeof(BoxCollider))] public class InteractableObject : MonoBehaviour { private Renderer _renderer; void Awake() => _renderer = GetComponent<Renderer>(); // 近接したときに呼び出されるコールバック(Trigger 必須) private void OnTriggerEnter(Collider other) { if (other.TryGetComponent<ZepetoCharacterController>(out var _)) { Debug.Log($"{name} に Avatar が接近しました。"); if (_renderer) _renderer.material.color = Color.green; } } // 離れたときの処理 private void OnTriggerExit(Collider other) { if (other.TryGetComponent<ZepetoCharacterController>(out var _)) { if (_renderer) _renderer.material.color = Color.white; } } // マウスクリック(またはタッチ)に対する処理 private void OnMouseDown() { Debug.Log($"{name} がクリックされました。"); // 例: スコア加算や UI 表示などのロジックをここに書く } } |
- 任意のシーンオブジェクト(例:
Cube_Interactable)に Box Collider を追加し、Is Trigger にチェックします。 - 同オブジェクトに本スクリプトと
Rendererコンポーネントが付いていることを確認してください。
ポイント:エディタ上で
OnMouseDownが機能しない場合は、シーンに Event System が配置されているか、カメラのレイヤー設定が UI レイキャスト対象になっているかをチェックします。
テスト・ビルド・公開までのフローとエラー対策
開発したワールドはローカルで動作確認し、問題なければ実機向けにビルドして ZEPETO Studio にアップロードします。ここではテスト手順から審査申請までを体系的に整理し、よくあるエラーとその対処法をまとめました。
ZEPETO Emulator でのローカルプレビュー
- Unity エディタ上部メニューの ZEPETO → Open Emulator を選択します。
- エミュレータが起動したら、シーンビューの Play と同様にリアルタイムで Avatar が表示されます。
- キーボード入力やマウスクリックはエミュレータ上でも有効なので、
PlayerMovementとInteractableObjectの挙動を即座に確認できます。
ポイント:エミュレータが起動しない場合は、Edit → Project Settings → Player の Scripting Define Symbols に
ZEPETO_EMULATORが含まれているかを必ずチェックしてください。
ビルド → Studio アップロード手順
| 手順 | 操作内容 |
|---|---|
| 1. Build Settings 設定 | File → Build Settings を開き、プラットフォームを Android(または iOS)に切り替えます。Add Open Scenes で現在のシーンを追加し、Build ボタンで APK または IPA を生成します。 |
| 2. Studio にサインイン | エミュレータと同一アカウントで https://studio.zepeto.me にログインします。 |
| 3. ワールド登録 | ダッシュボード左メニューの My Worlds → New World を選択し、生成したビルドファイル(APK/IPA)をドラッグ&ドロップでアップロードします。その後、タイトル・説明・プレビュー画像を入力します。 |
| 4. 審査申請 | 「Submit for Review」ボタンを押すと自動的に審査キューへ投入されます。審査は パフォーマンス・著作権・コミュニティガイドライン の 3 点が主なチェック項目です。 |
ポイント:
Package Nameが既存と重複するとアップロードエラーになるため、com.yourname.world01のようにユニークな文字列を使用してください。
よくあるエラーとトラブルシューティング
| エラーシナリオ | 主な原因 | 推奨対処法 |
|---|---|---|
| インポート失敗(Missing script / Assembly reference) | Unity バージョンが SDK の推奨範囲外、または他パッケージと依存関係が衝突 | Unity Hub で 2020.3.45f1 以上 LTS に切り替え、Window → Package Manager から競合パッケージを削除 |
| エミュレータ起動時のブラックスクリーン | ZEPETO_EMULATOR シンボルが無効、または Android SDK パス未設定 |
Edit → Preferences → External Tools で Android SDK の正しいパスを指定し、再度 Open Emulator |
| ビルド時に “Android SDK not found” | Unity に Android Build Support がインストールされていない | Unity Hub の Installs → Add Modules から Android Build Support (IL2CPP と Mono 両方) を追加 |
| アップロード後の審査不合格(パフォーマンス警告) | Terrain 解像度が過大、または不要なリアルタイムライトが残っている | Terrain の Heightmap Resolution を 513 以下に下げ、使用しない Light コンポーネントを削除 |
| Avatar がオブジェクトと貫通する | Collider 設定ミス(Is Trigger が有効)または Rigidbody が欠如 | オブジェクトに Box / Mesh Collider(Trigger でなければ)を付与し、必要なら Rigidbody (Kinematic) を追加 |
ポイント:Unity コンソールだけでなく、エミュレータのログファイル
%USERPROFILE%\AppData\LocalLow\ZEPETO\ZepetoEmulator\log.txtも併せて確認すると、原因特定がスムーズです。
まとめ
- Unity の推奨バージョンは 2020.3 LTS 系(2020.3.45f1 以上)で、Android/iOS ビルドサポートは IL2CPP と Mono 両方をインストールすると柔軟に対応できます。
- ZEPETO アカウントと Studio の認証が完了すれば、Package Manager 経由で無料の「ZEPETO World SDK(v2.5.1)」を取得し、「Default Project」テンプレートですぐに開発環境が構築できます。
- Terrain と標準 Prefabでシンプルなマップを作り、公式サンプルコードをベースに 移動・インタラクションスクリプトを実装すれば、基本的なワールドが完成します。
- ZEPETO Emulator でローカルテストし、ビルド → Studio アップロードのフローを踏めば、審査合格後に即座に公開可能です。
- エラー対策としては Unity バージョン合わせ・SDK の依存関係チェック・Collider 設定の見直しが最も重要です。
これらの手順とポイントを抑えておけば、2026 年以降でも安定して動作する ZEPETO World SDK を活用したバーチャル空間開発がスムーズに進められます。ぜひ公式 Package Manager から最新 SDK を取得し、自分だけのクリエイティブなワールドを作り上げてみてください。