Excel のフラグを回収したらタイトル画面にあたらしいボタンを表示する

35 views
Skip to first unread message

みるくねこ

unread,
May 9, 2024, 1:52:37 AMMay 9
to 宴ユーザーグループ
Unity バージョン:2022.3.27f1
宴 バージョン:4

度々失礼します。
表題のようなシステムを作りたく、今試行錯誤中なのですが、
やりたいこととしては

①シナリオを進めていって、特定のフラグを回収する。
②タイトル画面にて新しいボタンを表示。
③ボタンをクリックすると新しいシーンへ移動する。

こちらの②③はスクリプトでなんとかできたのですが、
①から②へのExcel上のフラグを回収したら~という部分でどういったスクリプトを書けば実装できるかで行き詰まってしまい質問させて頂きました。

可能であればアドバイス頂けますと幸いです。
よろしくお願いいたします。

マッドネスラボ

unread,
May 9, 2024, 2:24:30 AMMay 9
to 宴ユーザーグループ
こちらについても、有志ユーザー製作のプラグインがあるので、それを使うとわかりやすいかもしれません。

以下に宴側のドキュメント等もまとめておきます。
……


フラグということであれば、Paramシートを使って設定する必要があります。
上記リンク先のサンプルでいう「flag」などがそれにあたります。名前は自分のわかりやすいものをつけてください。
ただ、タイトル画面で扱うためには、FileTypeを「System」にする必要があります。(個別のセーブデータはタイトル画面ではロードされないので)

>①シナリオを進めていって、特定のフラグを回収する。
シナリオ上で、Parameterを操作する方法はいくつかあって、
基本的には、Paramコマンドを使用します。
https://madnesslabo.net/utage/?page_id=1802
たとえば、「flag」という名前のパラメーターをtrueにする(フラグを立てる)にはこのように書きます。
Param flag=true

他にもSelectionコマンドのArg3を設定することで、その選択肢が選ばれたときにパラメーターの操作をすることができます。
たとえば、Arg3に flag=true と書いておけば、その選択肢が選んだときに、flagがtrueになります。

>②タイトル画面にて新しいボタンを表示。
これに関しては、こちらのドキュメントを参考にしてプログラムを書いてみてください。



2024年5月9日木曜日 14:52:37 UTC+9 みるくねこ:

みるくねこ

unread,
May 9, 2024, 10:00:10 AMMay 9
to 宴ユーザーグループ
ご回答ありがとうございます!!
本当に助かります。
概ね実装ができ、あと一歩のところなのですが、みていただけないでしょうか…💦

フラグの取得自体はExcel上でできているのですが、
フラグを取得したらボタンが表示されるというところだけができない状態です。

「tuioku」というのがボタンがあるオブジェクトです。

お教えいただいたプラグインなどのURLを参考にしましたがどうにも自分では解決できず…
宴のサポートの範囲外でしたら申し訳ありません。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Utage;

public class TitleChangeClear : MonoBehaviour
{
    public AdvEngine engine;

    public GameObject tuioku;

    void Start()
    {
        tuioku.SetActive(false);
    }


    void OnChangeClear()
    {
        bool clear = engine.Param.GetParameterBoolean("clear");
        tuioku.SetActive(true);
    }

}
2024年5月9日木曜日 15:24:30 UTC+9 マッドネスラボ:
Message has been deleted

マッドネスラボ

unread,
May 9, 2024, 3:36:44 PMMay 9
to 宴ユーザーグループ

元のプラグインは、下記のようになっていまして、
OnEnableのタイミングで、 OnChangeClear()を読んでタイトル画面の表示を変える・・・という形になっています。
OnEnableはコンポーネントがオンになったタイミングで呼ばれますので、Titleオブジェクトにコンポーネントをつけておけば、タイトル画面が表示されるタイミングでよばれます。


public class TitleChangeClear : MonoBehaviour
{
public AdvEngine engine;

public Image title_image;
public Sprite[] title_Sprite;

void OnEnable()
{
OnChangeClear();
}

void OnChangeClear()
{
int clear = (int)engine.Param.GetParameter("game_clear");
title_image.sprite = title_Sprite[clear];
}
}


なので、これをもとにするのであれば、
このように書けばよいかと思います。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Utage;

public class TitleChangeClear : MonoBehaviour
{
    public AdvEngine engine;

    public GameObject tuioku;

    void OnEnable()
    {
        OnChangeClear();


    }


    void OnChangeClear()
    {
        bool clear = engine.Param.GetParameterBoolean("clear");
        tuioku.SetActive( clear   );
    }
}
2024年5月9日木曜日 23:00:10 UTC+9 みるくねこ:

みるくねこ

unread,
May 9, 2024, 4:51:39 PMMay 9
to 宴ユーザーグループ
こちら解決しました…!!!
本当に助かりましたありがとうございます!!!

2024年5月10日金曜日 4:36:44 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages