Config(コンフィグ)メニューへの独自項目の追加について

80 views
Skip to first unread message

sola

unread,
Mar 29, 2025, 5:20:56 AMMar 29
to 宴ユーザーグループ

宴のバージョン: 宴4.1.8

UnityのバージョンとOS:Unity6000.1.0b11 Mac

Unityの習熟度:初心者〜中級者


お世話になっております。

Configのメニューに独自の項目(Int型のスライダー)を追加したいと考えてます。

SliderコンポーネントにはWholeNumbersにチェックは入れてます。

UtageUguiConfig.csや他にどのスクリプトにどのように変更を加えればよろしいでしょうか?

slider.jpg

マッドネスラボ

unread,
Mar 29, 2025, 7:14:21 AMMar 29
to 宴ユーザーグループ
AdvConfig.csに任意の値を追加したりする仕組みがあるわけではないですので、値を制御したり保存する仕組みが必要になります。

ある程度複雑なシステムで、ほかにセーブロードしないといけない値があるなら
「独自の管理システムを作成して、セーブロードの仕組みなどを拡張する」という形になりますが、これは対象のシステム次第になります。

簡易的に行うなら
「パラメーターシートに値を追加して、その値をコンフィグのUIで入力可能にする」
という形になるかと思います。

これの手順は次の通りです。
・パラメーターシートに値を追加( ここでは仮に名前を「MyValue」 とします)。FileTypeをSystemにして、TypeはIntにします。
・そのパラメーターをUIスライダーで制御できるようにするコンポーネントを作成(下記参照)
・コンフィグ画面で追加したスライダーと同一オブジェクトにコンポーネントを追加
ss_0610.png
・必要に応じて、コンフィグ画面の「デフォルトに戻す」ボタンのClickイベントを追加して、上記のコンポーネントの「OnClickConfigReset」を設定
ss_0611.png

ここで設定した値を、独自の仕組みで使用するのであれば、
このコンポーネントを参照設定して、GetMyValueメソッドから取得してもよいですし
呼び出す部分で、 Engine.Param.GetParameterInt("MyValue")  などのようにして、直接AdvEngineのパラメーターから呼び出しても構いません。



サンプルソースコード
コピペしてクラス名を変え、"MyValue"の名前を変えたり、リセット時の値を調整するなどして、アレンジしてください。

using UnityEngine;
using UnityEngine.UI;
using UtageExtensions;
using Utage;

    //Paramシートで設定している値を、コンフィグのスライダーでUI制御するサンプル
    public class Sample : MonoBehaviour
    {
        public AdvEngine Engine => this.GetAdvEngineCacheFindIfMissing(ref engine);
        [SerializeField] AdvEngine engine;


        public Slider Slider => this.GetComponentCache(ref slider);
        [SerializeField]  Slider slider;
       
       
        public int GetMyValue()
        {
            if (!Engine.Param.IsInit)
            {
                Debug.LogWarning("まだパラメーターが初期化されていません");
                return 0;
            }
            return Engine.Param.GetParameterInt("MyValue");
        }

        public void SetMyValue(int value)
        {
            if (!Engine.Param.IsInit)
            {
                Debug.LogWarning("まだパラメーターが初期化されていません");
            }
            Engine.Param.SetParameterInt("MyValue",value);
        }

        public void OnClickConfigReset()
        {
            //パラメーターをリセット(値は任意に)
            SetMyValue(0);
        }
       
        void Start()
        {
            //スライダーの値が変わったら、パラメーターに設定
            Slider.onValueChanged.AddListener((value) =>
            {
                SetMyValue((int)value);
            });
        }

        void OnEnable()
        {
            Slider.value = GetMyValue();
        }
    }





2025年3月29日土曜日 18:20:56 UTC+9 sola:

sola

unread,
Mar 29, 2025, 7:41:51 AMMar 29
to 宴ユーザーグループ

頂いたサンプルソースコードからコンフィグ画面の独自スライダーの実装と

「デフォルトに戻す」でのリセット、GetMyValueでの取得等の確認できました!

迅速なご対応ありがとうございました!

2025年3月29日土曜日 20:14:21 UTC+9 マッドネスラボ:
Reply all
Reply to author
Forward
0 new messages