【Unity】QuickSaveを実装、手軽なセーブ機能

当サイトで紹介する商品・サービス等の外部リンクは、アフィリエイト広告を含む場合があります。
スポンサーリンク
本記事を読むと以下の実行ができます

Q.Loadボタンを押したときに、Q.Saveボタンを押してセーブしたシーンをロードする。

QuickSaveの実装

セーブは、今までの進行を保存する機能で、
ゲーム制作で最も必要なものです。

本記事では、セーブ・ロード機能の第一歩として、クイックセーブとクイックロードの実装をします。
クイックセーブとロードの機能は、ノベルゲームで力を発揮します。

本記事は次の人におすすめ
  • ノベルゲームの作り方を知りたい。
  • クイックセーブとクイックロードの使い方を知りたい。
Udemyで学習する
スポンサーリンク

クイックセーブ・クイックロード

クイックセーブ・クイックロードの確認

ノベルゲームにおける「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は、オンデマンド式の学習講座です。
趣味から実務まで使えるおすすめの講座を紹介します。

\Unityの学習から収益化の方法はこちらから!/

ビックセール開催中(12月19日まで)
対象のコースが1500円から(最大95%OFF)

多彩な講座から自分に合った講座を探そう!

最大95%OFF

終了まで

時間




解説

今回のスクリプトでは、名前空間の変更がありません。

「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」に代入し、
クイックロードではその逆の操作を行います。

クイックセーブとクイックロードは、ノベルゲームにおいて重要な要素であり、
プレイヤーが自由にゲームの進行を管理できるようにするための機能です。

これにより、プレイヤーは選択肢やストーリーの展開によって影響を受ける前に、自由にセーブ・ロードすることができます。

Udemyで学習する

この記事を書いた人

プロフィール

アリッシア

                 

大学4年間で何か胸を張れるスキルを身に着けたくて当サイト運営を始めました。
現在、大学院に進学するか就職するか迷いながら勉強しています。
詳しいプロフィールはこちら

Contact icon

contact

X icon

X

Instagram icon

Instagram

Note icon

Note

スポンサーリンク
Unity
フォローする
タイトルとURLをコピーしました