プロジェクト固有のUI画面は、レイアウトだけならUnityのデフォルトのUIシステム(uGUI)で作成可能ですが、
UIフロー等を変えたり、数値などをUIに反映させるにはプログラムで制御するしかないです。
ある程度のUnityやC#のスキルがないと難しいと思います。
パラメーターを取得するには、下記のプログラムで可能です。
UIプログラムは基本的には
・UI画面を切り替える処理(どのボタンからどの画面を開いて、今の画面は表示を継続するのかしないのか)
・開いてUI画面の表示をゲームの仕様に合わせて設定する処理
・UI画面を閉じて前の画面に戻る処理(どのボタンを押すと閉じるのか)
というのが必要になります。
宴のUIプログラムは、基本的には各画面はUguiViewというクラスを継承(C#プログラムの概念です)して実装すると楽に書けます。
以下に簡単なサンプルプログラムを書きました。
using UnityEngine;
using UnityEngine.UI;
using UtageExtensions;
using System.Collections;
using TMPro;
using Utage;
namespace Utage
{
/// カスタムUI画面のサンプル
public class SampleCustomUiView : UguiView
{
//ADVエンジン
public AdvEngine Engine => this.GetAdvEngineCacheFindIfMissing(ref engine);
[SerializeField] protected AdvEngine engine;
//メインゲーム画面
public UtageUguiMainGame mainGame;
public virtual bool IsInit { get; set; }
//好感度のバー
[SerializeField] Image paramBar;
//好感度のテキスト
[SerializeField] TextMeshProUGUI paramText;
/// メインゲーム画面からこの画面を開く
public void OpenFromMainGame()
{
//メインゲーム画面を閉じる
mainGame.Close();
//この画面を開く
this.Open(mainGame);
}
/// オープンしたときに呼ばれる
protected virtual void OnOpen()
{
IsInit = false;
StartCoroutine(CoWaitOpen());
}
//起動待ちしてから開く
protected virtual IEnumerator CoWaitOpen()
{
while (Engine.IsWaitBootLoading) yield break;
//以下に画面の初期化処理を書く
//好感度を取得してバーに反映
var v = Engine.Param.GetParameterInt("好感度");
if(paramBar) paramBar.fillAmount = v / 100.0f; //好感度は0~100の範囲
//好感度の数値をテキストに設定
if(paramText) paramText.text = v.ToString();
}
protected virtual void Update()
{
//右クリックで戻る
if (IsInit && InputUtil.IsInputGuiClose())
{
Back();
}
}
}
}
>1
たとえばコンフィグ画面等を複製をした場合、コンフィグ画面用のUIプログラムがついてくるので不必要なものを外して、独自のUI画面用のプログラムを書いて設定しなおす必要があります。
Canvas-AdvUI>Config オブジェクトがコンフィグ画面の表示オブジェクトで、そのオブジェクトについている、UtageUguiConfig.csというのがコンフィグ画面制御のコンポーネントになりますので、
上記のサンプルを元にして作成したコンポーネントと入れ替えてください。
実際は、コンフィグ画面は他にもタブで画面を切り替えるようになっていたりと複雑なのでシンプルな画面ならタブ切り替えしないで済むように作ったほうがよいです。
SampleCustomUiView (作成したコンポーネント)のインスペクターから
・EngineやMainGameオブジェクトを設定し、
・好感度表示用のUIオブジェクトの設定をしてください
・画面を閉じる処理
BgオブジェクトとWindow > Button-Back オブジェクトの「OnClick」に、Sampleオブジェクトを設定し、SampleCustomUiView (作成したコンポーネント)のOnTapBackを設定
・画面を開く処理
メニューにボタンを追加し、そのボタンのOnClickに作成し画面のOpenFromMainGameを設定。
これで大まかにははできると思いますので、
あとは、以下のパラメーターをどうUIに反映させるかの部分を、自分のゲームの仕様に合わせてアレンジしていってください
//好感度を取得してバーに反映
var v = Engine.Param.GetParameterInt("好感度");
if(paramBar) paramBar.fillAmount = v / 100.0f; //好感度は0~100の範囲
//好感度の数値をテキストに設定
if(paramText) paramText.text = v.ToString();
>2
この場合は画面の遷移処理が必要ないので、UguiViewを継承せずにUpdateなどでパラメーターを監視して、UIに反映させるプログラムを書く形になります。
UIの表示非表示のオンオフフラグなどを持たせたい場合は、コンフィグ画面にそのオンオフ切り替え用ボタンを追加して、フラグと連動させるプログラムを追加する必要があります。
2024年11月13日水曜日 20:26:14 UTC+9 genshi okinawa: