Q.Loadボタンを押したときに、Q.Saveボタンを押してセーブしたシーンをロードする。
セーブは、今までの進行を保存する機能で、
ゲーム制作で最も必要なものです。
本記事では、セーブ・ロード機能の第一歩として、クイックセーブとクイックロードの実装をします。
クイックセーブとロードの機能は、ノベルゲームで力を発揮します。
- ノベルゲームの作り方を知りたい。
- クイックセーブとクイックロードの使い方を知りたい。
クイックセーブ・クイックロード
ノベルゲームにおける「QuickSave」と「QuickRoad」は、
プレイヤーがゲームをよりスムーズに進行させるための機能です。
通常のセーブやロードはセーブボタンで、用意された100個程度のセーブが保存できて、
それぞれをロードボタンを押して、そのシーンまで戻ることができます。
一方で、クイックセーブとクイックロードは1つ、2つと数少ないですが、
短時間で手軽にゲームの状態を保存・読み込みすることができます。
クイックセーブとクイックロードは、プレイヤーに便利な機能であり、
ゲームの進行を効率化することができます。
特にノベルゲームではストーリーの流れや選択肢の結果によって展開が変わるため、
プレイヤーが自由にセーブ・ロードできることは重要な要素となります。
選択肢でも重要なシーンでもないけれど、セーブしたい。
そんなときに役立つのがクイックセーブとクイックロードの機能になります。
クイックセーブ
クイックセーブは、プレイヤーが現在のゲームの進行状況を瞬時に保存する機能です。
特定のポイントでゲームを一時停止し、その時点の状態を保存します。
例えば、表示されているテキストや選択肢の進行度などを保存します。
通常、ノベルゲームのクイックセーブはメニューやシステムボタンからアクセスできるようになっています。
クイックロード
クイックロードは、クイックセーブで保存されたゲームの状態を瞬時に読み込む機能です。
プレイヤーはクイックロードを選択することで、
最後に行ったクイックセーブの状態からゲームを再開できます。
クイックロードを使用すると、瞬時に前回のセーブポイントからゲームを再開することができます。
クイックセーブとクイックロードの実装
ここまで、クイックセーブとクイックロードの機能と実用性を理解したところで、ここからはノベルゲームに実装していきます。
通常のセーブ・ロードに比べて、クイックセーブとクイックロードは変数の値を互いに交換する操作のみで非常に簡単に実装できます。
交換をする変数「A」・「B」として具体的に考えます。
//クイックセーブ
A=B;
//クイックロード
B=A;
本記事で紹介するソースコードでは、Aは「csvcontroler.i」、Bは「QPoint」となります。
ソースコード
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class QSave_Load : MonoBehaviour
{
int QPoint;
private void Start()
{
Debug.Log(csvcontroler.i);
}
public void QSave()
{
QPoint = csvcontroler.i; // csvcontroler クラスの静的変数 i の値を保存
Debug.Log("Saved QPoint: " + QPoint);
}
public void QLoad()
{
csvcontroler.i = QPoint; // 保存した QPoint の値を csvcontroler クラスの静的変数 i にロード
Debug.Log("Loaded QPoint: " + csvcontroler.i);
}
}
UdemyでUnityを学習
Udemyは、オンデマンド式の学習講座です。
趣味から実務まで使えるおすすめの講座を紹介します。
ビックセール開催中(12月19日まで)
対象のコースが1500円から(最大95%OFF)
- 【Unity C# ゲーム開発超入門】7つのミニゲームを作っておぼえる!UnityとC#講座
Unityで頻出の機能を実際のゲーム作りで学習。
何か作りたい、今後の開発で役立てたい初心者におすすめ
- 【Unity C# ゲーム開発初心者レベルアップ】7つのトランプゲームを作っておぼえる!UnityとC#講座
トランプやボードゲーム作りに特化している講座。
テーブルゲームを作りたい人におすすめ。
- 【全行程を網羅!最初に学びたい総合学習】Unityワールド制作講座
Unityワールド制作の全工程を学習できる講座。
RPGを作りたい人におすすめ。
- Unity ゲーム開発:インディーゲームクリエイターが教える C#の基礎からゲームリリースまで【スタジオしまづ】
C#の文法やApp StoreとGoogle Playへゲームをリリース方法を解説。
ゲームを出品したい人におすすめ。
解説
今回のスクリプトでは、名前空間の変更がありません。
「QPoint」はint型の変数で、保存および読み込みされるゲームデータを保持します。
int QPoint;
Startメソッドは、csvcontrolerクラスの静的変数iの値を出力しています。
別に必要ではありませんが、consoleウィンドウにて処理できているか確認するために入れています。
private void Start()
{
Debug.Log(csvcontroler.i);
}
QSaveメソッドは、ゲームデータを保存するためのメソッドです。
QPointにcsvcontrolerクラスの静的変数iの値を代入し、デバッグログに保存された値を表示します。
public void QSave()
{
QPoint = csvcontroler.i; // csvcontroler クラスの静的変数 i の値を保存
Debug.Log("Saved QPoint: " + QPoint);
}
QLoadメソッドは、ゲームデータを読み込むためのメソッドです。
csvcontrolerクラスの静的変数iに保存されたQPointの値を代入し、デバッグログにロードされた値を表示します。
public void QLoad()
{
csvcontroler.i = QPoint; // 保存した QPoint の値を csvcontroler クラスの静的変数 i にロード
Debug.Log("Loaded QPoint: " + csvcontroler.i);
}
実演
今回のスクリプト「QSave_Load.cs」をHierarchyウィンドウにアタッチをしてください。
また、クイックセーブとクイックロードを処理するUIボタン「Q.Save」と「Q.Load」を選択して、onclickの項目でそれぞれQSaveメソッドとQLoadメソッドをアタッチしてください。
ここまで完了しましたら、再生ボタンを押してください。
冒頭のような処理が行われば、成功です。
まとめ
ノベルゲームにおける「クイックセーブ」と「クイックロード」は、
プレイヤーがゲームをスムーズに進行させるための便利な機能です。
通常のセーブやロードとは異なり、クイックセーブとクイックロードではセーブポイントを短時間で保存・読み込みすることができます。
クイックセーブは、プレイヤーが現在のゲームの進行状況を瞬時に保存する機能です。
特定のポイントでゲームを一時停止し、その時点の状態を保存します。
通常、ノベルゲームではメニューやシステムボタンからアクセスできるようになっています。
クイックロードは、クイックセーブで保存されたゲームの状態を瞬時に読み込む機能です。
プレイヤーはクイックロードを選択することで、最後に行ったクイックセーブの状態からゲームを再開できます。
クイックロードを使用すると、前回のセーブポイントからゲームを即座に再開することができます。
クイックセーブとクイックロードの実装は比較的簡単で、変数の値を互いに交換するだけです。
// クイックセーブ
QPoint = csvcontroler.i;
// クイックロード
csvcontroler.i = QPoint;
クイックセーブでは、「csvcontroler.i」の値を「QPoint」に代入し、
クイックロードではその逆の操作を行います。
クイックセーブとクイックロードは、ノベルゲームにおいて重要な要素であり、
プレイヤーが自由にゲームの進行を管理できるようにするための機能です。
これにより、プレイヤーは選択肢やストーリーの展開によって影響を受ける前に、自由にセーブ・ロードすることができます。