# スマホでのゲーム開発

今まで学んだUnityの知識を拡張し、スマホに関する特別な開発方法を新しく勉強しましょう。

# Unityを使用するスマホの開発

## Unityでのスマホ開発：何が異なる？

今まで学んできたUnityの機能は大分に変わらない。物理処理に使う「Rigidbody」、当たり判定に使う「Collider」、サウンド再生に使う「AudioSource」、3Dシーンを見るための「Camera」などはそのまま使える

ただし、スマホのゲームを作るには、PCゲームと異なる部分もある：

### 入力

キーボード、マウス、コントローラーがないため、基本としてタッチの操作でゲームを遊ぶのですが、他の入力も利用できる

- 加速度センサー：スマホの傾きや動きを取得できる
- コンパス：スマホの方位を求めることができる
- 位置情報：GPSにて、緯度経度を求めることができる
- カメラ：仮想現実（AR）ゲームの開発ができる

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/DrRimage.png)

### 画面サイズが様々ながある

スマホだけではなく、iPad や Android のタブレットがあるため、様々な画面サイズに対応しなければならない。Canvasのアンカーポイントをうまく利用し、どの画面サイズであってもゲームのUIなどが正しく見えるようにしなければならない。

<table id="bkmrk--1" style="border-collapse:collapse;width:100%;border-width:0px;"><colgroup><col style="width:46.7214%;"></col><col style="width:53.2786%;"></col></colgroup><tbody><tr><td style="border-width:0px;">[![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/OOVimage.png)](https://class.illogic.games/uploads/images/gallery/2026-07/OOVimage.png)

</td><td style="border-width:0px;">[![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/51nimage.png)](https://class.illogic.games/uploads/images/gallery/2026-07/51nimage.png)</td></tr></tbody></table>

### PCやゲーム機と比べて、計算力が弱い

CPUとGPU（グラフィックスボード）は PCと比べて弱いため、計算量を減らす必要がある。重い3Dモデルや複雑な処理にすると、ゲームが重くなったり、端末が熱くなったり、バッテリーが速く消費したりするため、ある程度軽く実行できるように設計しなければならない。

## iOSの場合は

Androidと比べ、iOS（iPhone か iPad）の開発が大幅に異なる。

#### ハードウェア

開発端末（スマホ／タブレット）はもちろん必要で、その他に Mac のパソコンが必要です。普段 Mac Mini を使うケースが多い

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/tqpimage.png)

#### ソフトウェア

Unity（Macバージョン）のほかに、Apple専用の開発ソフトウェア「Xcode」（Mac の開発環境）が必要である。（Windows の Visual Studioと同じ）

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/azlimage.png)

#### その他必要なもの

ハードウェアとソフトウェアを備えても、まだ開発できない。その他に：

- Appleからの許可：Apple Developer として登録し、電子証明書を受け取る必要がある 
    - XCodeで証明書を登録しないと、開発できない
    - 年間 $100 ドルにする（アプリを公開したい場合）
- 端末の登録 
    - 開発用の端末を登録し、別の電子証明書が必要
    - XCodeで登録し、その端末だけなら開発ができる。

## Androidスマホの設定、Unityとの接続

まず、開発用のスマホを「開発者モード」にしなければならない。Android端末の「設定」を開き、「ビルド番号」を探す（以下の流れは端末メーカにより多少にことなる場合がある - 参照画像：Google Pixel 7）

<table id="bkmrk--4" style="border-collapse:collapse;width:100%;border-width:0px;"><colgroup><col style="width:33.3333%;"></col><col style="width:33.3333%;"></col><col style="width:33.3333%;"></col></colgroup><tbody><tr><td style="border-width:0px;">![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/YS2image.png)

</td><td style="border-width:0px;">![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/cRjimage.png)</td><td style="border-width:0px;">![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/12Himage.png)

</td></tr></tbody></table>

「ビルド番号」を<span style="color:rgb(186,55,42);">**7回タップ**</span>すると、開発者モードになる確認メッセージが表示される。

<table id="bkmrk--5" style="border-collapse:collapse;width:100%;border-width:0px;"><colgroup><col style="width:33.3333%;"></col><col style="width:33.3333%;"></col><col style="width:33.3333%;"></col></colgroup><tbody><tr><td style="border-width:0px;">  
</td><td style="border-width:0px;">![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/KLmimage.png)

</td><td style="border-width:0px;">  
</td></tr></tbody></table>

これで、開発できるようになった。なお、Unityとの接続できるため、USBデバッグを有効化しなければならない。同じ設定画面で：

<table id="bkmrk--6" style="border-collapse:collapse;width:100%;border-width:0px;"><colgroup><col style="width:33.3333%;"></col><col style="width:33.3333%;"></col><col style="width:33.3333%;"></col></colgroup><tbody><tr><td style="border-width:0px;">![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/yvcimage.png)

</td><td style="border-width:0px;">![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/Xnkimage.png)

</td><td style="border-width:0px;">![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/HJjimage.png)

</td></tr></tbody></table>

を選択すると、Unityの開発で使えるようになる。なお、<span style="color:rgb(186,55,42);">**普通のスマホ操作に戻したいなら<span style="color:rgb(230,126,35);">「開発者向けオプションを使用」</span>を無効化してください。**</span>

### Unityとの接続、実機で実行確認

設定のあとに、USBケーブルでPCと接続してください。スマホで以下のような画面が現れる：

[![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/ONkimage.png)](https://class.illogic.games/uploads/images/gallery/2026-07/ONkimage.png)

許可してください（チェックボックスを入れなくても大丈夫）。

次、Unityのプロジェクト設定の編集が必要。普通「Windows」の開発になっているが、「Android」に切り替えないといけないので、Unity の「Build Profiles」を開き、プロジェクトのプラットホームを変えてください：

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/ArDimage.png)

そして、Unityで作ったゲームをスマホで実行するには、Build Profiles でUSBで接続した端末を選び、「Build And Run」を押す。ゲームをビルドされ、端末に転送される。その後、実機で確認できる！

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/BQnimage.png)

## その他便利な設定

#### 画面も向きを指定

スマホ開発では画面の向きを固定したい場合もあるので、「プロジェクト設定」で指定できる。

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/w1rimage.png)

ここで選択できるのは：

- Portrait：縦
- Portrait Upside Down：縦（さかさま）
- Landscape Right：横→右
- Landscape Left：横→左
- Auto Rotation：自動回転

#### Unityでスマホの画面を真似する

同じゲームは様々な端末でどう見えるのか確かめたいので、Unityは スマホ開発モード（Switch Platformの後）にすると、「Simulator」が現れる。「Simulator」でいろんな画面の向きとサイズを切り替えることができ、見え方をすぐ確認できる：

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/v7Nimage.png)

Simulator の中で、たくさんの端末を選ぶことができるので、必要だったら、UIを調整し、どの端末でも正確に見えるようにする：

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/qpyimage.png)

# スマホ機能のまとめ

## 新入力システム（Input System）

### タッチ・マルチタッチ

#### 有効化・無効化

```c#
using UnityEngine.InputSystem.EnhancedTouch;

// 有効化
EnhancedTouchSupport.Enable()

// 無効化
EnhancedTouchSupport.Disable()
```

#### 各タッチのイベント

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/zPgimage.png)

```c#
using Touch = UnityEngine.InputSystem.EnhancedTouch.Touch; 

// 画面を触れ始めたとき
Touch.onFingerDown += 処理メソッド;

// 指は移動中のとき
Touch.onFingerMove += 処理メソッド;

// 指が画面から放したとき
Touch.onFingerUp += 処理メソッド;
```

#### イベントを受け取るメソッド

```c#
// finger: 指のデータ
void 処理メソッド(Finger finger)
{
    // イベントを処理
}
```

#### タッチの全体状態

```c#
// 現在画面を触れている指の本数（int型）
Touch.activeTouches;

// 現在画面を触れている指のデータ（Finger配列型）
Touch.activeFingers;
```

#### 指のデータ（Finger）

```c#
// タッチした画面の位置（Vector2型）
finger.screenPosition

// タッチした指の順番（int型）
// 0 = 1本目
// 1 = 2本目
// 2 = 3本目 
// …
// 9 = 10本目
finger.index
```

### 加速度センサー、スマホの傾き

#### 有効化・無効化

```c#
using UnityEngine.InputSystem;

// 使えるか？
bool canUse = Accelerometer.current != null;

// 有効化
InputSystem.EnableDevice(Accelerometer.current);

// 無効化
InputSystem.DisableDevice(Accelerometer.current);
```

#### 位置を求める

```c#
// 加速度の値（3次元ベクトル）
Vector3 value = Accelerometer.current.acceleration.ReadValue();
```

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/RL1image.png)

加速度センサーの座標系

## 旧入力マネージャー（Input Manager）

以下の機能は「旧入力マネージャー」を使用する機能であるため、「プレーヤー設定」でアクティブな入力を適切に設定しなければならない。

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/nNNimage.png)

### コンパス、方位

#### 有効化・無効化

```c#
// 有効化
Input.compass.enabled = true;

// 無効化
Input.compass.enabled = false;
```

#### 向きを求める

```c#
// 方位（0度～360度の実数）
float value = Input.compass.trueHeading;
```

`trueHeading`は度単位で表す方位である：

![image.png](https://class.illogic.games/uploads/images/gallery/2026-07/scaled-1680-/AfDimage.png)

### GPSの位置（緯度経度）

#### 有効化・無効化

```c#
// 有効化
Input.location.Start();

// 無効化
Input.location.Stop();
```

#### 位置を求める

```c#
// 位置情報
LocationInfo position = Input.location.lastData;
float lat = position.latitude;  // 緯度
float lon = position.longitude; // 経度
```