AdvConfig.csに任意の値を追加したりする仕組みがあるわけではないですので、値を制御したり保存する仕組みが必要になります。
ある程度複雑なシステムで、ほかにセーブロードしないといけない値があるなら
「独自の管理システムを作成して、セーブロードの仕組みなどを拡張する」という形になりますが、これは対象のシステム次第になります。
簡易的に行うなら
「パラメーターシートに値を追加して、その値をコンフィグのUIで入力可能にする」
という形になるかと思います。
これの手順は次の通りです。
・パラメーターシートに値を追加( ここでは仮に名前を「MyValue」 とします)。FileTypeをSystemにして、TypeはIntにします。
・そのパラメーターをUIスライダーで制御できるようにするコンポーネントを作成(下記参照)
・コンフィグ画面で追加したスライダーと同一オブジェクトにコンポーネントを追加
・必要に応じて、コンフィグ画面の「デフォルトに戻す」ボタンのClickイベントを追加して、上記のコンポーネントの「OnClickConfigReset」を設定

ここで設定した値を、独自の仕組みで使用するのであれば、
このコンポーネントを参照設定して、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: