ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
基本: SceneManager.LoadScene
using UnityEngine;
using UnityEngine.SceneManagement; // ★ 必須
public class SceneChanger : MonoBehaviour {
// 衝突時に scene2 へ遷移
void OnCollisionEnter(Collision collision) {
if (collision.gameObject.name == "GoalObject") {
SceneManager.LoadScene("scene2");
}
}
// ボタンから呼ぶ場合
public void GoToTitle() {
SceneManager.LoadScene("TitleScene");
}
// インデックス指定でも可(Build Settings の順序)
public void GoToFirstScene() {
SceneManager.LoadScene(0);
}
}
事前準備: Build Settings に追加
シーン名で読み込むためには、対象シーンを Build Settings に登録しておく必要があります:
- File → Build Settings (Ctrl + Shift + B)
- 「Scenes In Build」の欄に対象シーンファイル (.unity) をドラッグ&ドロップ
- もしくは「Add Open Scenes」ボタンで現在開いているシーンを追加
- 不要なシーンはチェックを外すかリストから削除
- 各シーンに付いているインデックス番号は
LoadScene(int)引数で使用
未登録のシーンを LoadScene すると以下のエラー:
Scene 'scene2' couldn't be loaded because it has not been added to the build settings
or the AssetBundle has not been loaded.
非同期ロード (LoadSceneAsync)
重いシーンを読み込む場合、同期 LoadScene だと画面がフリーズします。非同期ロードで進捗バーを表示:
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class LoadingScreen : MonoBehaviour {
public Slider progressBar;
public Text progressText;
public void StartLoading(string sceneName) {
StartCoroutine(LoadSceneCoroutine(sceneName));
}
IEnumerator LoadSceneCoroutine(string sceneName) {
AsyncOperation op = SceneManager.LoadSceneAsync(sceneName);
op.allowSceneActivation = false; // 読み込み完了しても自動切替しない
while (!op.isDone) {
// progress は 0.0〜0.9 まで進む(0.9 で読み込み完了、残り 0.1 はアクティブ化)
float progress = Mathf.Clamp01(op.progress / 0.9f);
progressBar.value = progress;
progressText.text = $"{(progress * 100):F0}%";
// 完了したらユーザー操作で遷移
if (op.progress >= 0.9f) {
progressText.text = "Press any key to continue";
if (Input.anyKey) {
op.allowSceneActivation = true;
}
}
yield return null;
}
}
}
加算ロード (Additive)
現在のシーンに重ねて別シーンを読み込む。広大なマップを区画分けする・UI とゲームを別シーンで管理する場合に使用:
// メインシーンを残したまま UI シーンを追加読み込み
SceneManager.LoadScene("UIScene", LoadSceneMode.Additive);
// 不要になったら個別アンロード
SceneManager.UnloadSceneAsync("UIScene");
// 現在ロードされているシーン一覧
for (int i = 0; i < SceneManager.sceneCount; i++) {
var scene = SceneManager.GetSceneAt(i);
Debug.Log($"Scene {i}: {scene.name} (loaded: {scene.isLoaded})");
}
シーン間のデータ引き継ぎ
シーン移動時、デフォルトではすべての GameObject が破棄されます。スコアやプレイヤー状態を引き継ぐには:
方式1: DontDestroyOnLoad
public class GameManager : MonoBehaviour {
public static GameManager Instance;
public int score = 0;
void Awake() {
if (Instance == null) {
Instance = this;
DontDestroyOnLoad(gameObject); // ★ シーン跨ぎで保持
} else {
Destroy(gameObject); // 重複インスタンス防止
}
}
}
// 別シーンから参照
void Start() {
Debug.Log(GameManager.Instance.score); // 前シーンのスコアが残っている
}
方式2: ScriptableObject(推奨)
[CreateAssetMenu(fileName = "GameState", menuName = "Game/State")]
public class GameState : ScriptableObject {
public int score;
public string playerName;
public int level;
}
// 各シーンの MonoBehaviour で参照
public class ScoreDisplay : MonoBehaviour {
public GameState gameState; // Inspector でアサイン
void Update() {
scoreText.text = gameState.score.ToString();
}
}
方式3: PlayerPrefs (永続化)
// セッション跨ぎで保存したい場合
PlayerPrefs.SetInt("HighScore", 12345);
PlayerPrefs.SetString("PlayerName", "Hero");
PlayerPrefs.Save();
// 読み込み
int hi = PlayerPrefs.GetInt("HighScore", 0); // デフォルト値 0
シーン読み込みイベント
void OnEnable() {
SceneManager.sceneLoaded += OnSceneLoaded;
}
void OnDisable() {
SceneManager.sceneLoaded -= OnSceneLoaded;
}
void OnSceneLoaded(Scene scene, LoadSceneMode mode) {
Debug.Log($"Scene loaded: {scene.name}, mode: {mode}");
// シーン固有の初期化処理
}
よくあるハマりどころ
- Build Settings 登録忘れ: 最頻出。エラーメッセージを必ず読む
- シーン名のスペル: 大文字小文字を含めて完全一致
- 同期 LoadScene でフリーズ: 大きいシーンは LoadSceneAsync に切替
- DontDestroyOnLoad で重複: シーン再ロード時に既存インスタンスを残しつつ新規も生成 → シングルトン判定必須
- Build 時にシーンが含まれない: Build Settings のチェックボックスが外れている
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?