・宴のバージョン:3.12.4
・Unityのバージョン:2022.3.4.f1
・OSバージョン:Windows11
・Unityの習熟度:初心者、プログラム経験なし
お世話になります。
コードを見て色々といじっていましたが、オートモード中にプログレスバーを表示してオートモード動作中の表示時間を作れないかやっていました。
AdvEngineやUtageUguiConfig、UtageUguiMainGame辺りも見ていたのですが、パラメータが合っているのかすら分かりません。
とりあえずエラーは出ずにUnityに組み込めたものの動作がまだまだ見込めてない状態です。
組み込むのは難易度が高いでしょうか?
この辺りも関連がありそうだとは思いましたが、まだ実際に触れてはいません。
こちら、色々と組み込んでやっていたコードです。エラーが出て手に負えなくなる前のものです。
現状の問題としてはプログレスバーが表示されない、オートモードとプログレスバーの進捗が合わないという点です。
プログレスバー表示がされていた時もありましたがコンフィグ設定を読み込んでいない、今現在は表示が出なくなりました。
オートモード中にテキストが表示されたらプログレスバーが連動して進捗表示、次のテキストが出たら再度プログレスバーを表示して連動させたいというのが本音です。
よろしくお願いします。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Utage;
using UtageExtensions;
public class AutoProgress : MonoBehaviour
{
public AdvEngine Engine { get { return this.GetComponentCacheFindIfMissing(ref this.engine); } }
[SerializeField]
protected AdvEngine engine;
//コンフィグデータへのインターフェース
protected virtual AdvConfig Config { get { return Engine.Config; } }
public Image progress; // サークルプログレスバーのImageコンポーネントをここにアタッチ
public Slider pageSpeedSlider;
public float autoModeDuration = 5f; // オートモードが完了するまでの時間
private float currentTime = 0f;
private bool isAutoMode = false;
private void Start()
{
currentTime = 0f;
isAutoMode = false;
// 初期値を設定
float initialPageSpeed = 5f;
pageSpeedSlider.value = initialPageSpeed;
UpdatePageSpeed(initialPageSpeed);
}
private void Update()
{
if (isAutoMode)
{
if (currentTime < autoModeDuration)
{
currentTime += Time.deltaTime;
float fillAmount = currentTime / autoModeDuration;
progress.fillAmount = fillAmount;
}
else
{
// オートモードが完了したら何らかの処理を行う場合はここに追加
isAutoMode = false;
}
}
}
private void OnPageSpeedSliderValueChanged()
{
float pageSpeed = pageSpeedSlider.value;
UpdatePageSpeed(pageSpeed);
}
private void UpdatePageSpeed(float pageSpeed)
{
// オートモードを変更
Config.AutoBrPageSpeed = pageSpeed;
}
// オートモードを開始するメソッド
public void StartAutoMode()
{
if (!isAutoMode)
{
currentTime = 0f;
isAutoMode = true;
}
}
// オートモードを停止するメソッド
public void StopAutoMode()
{
isAutoMode = false;
}
}
別スクリプトでボタントグル制御によりプログレスバー関連の画像の呼び出しはできるようにはしています。(サークル型なので背景と中心部のセット)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class ToggleProgressBar : MonoBehaviour
{
public Image progress; // プログレスバーのImageコンポーネントをここにアタッチ
public Image ProgressCenter; // プログレスバーのImageコンポーネントをここにアタッチ
public Image ProgressBase; // プログレスバーのImageコンポーネントをここにアタッチ
public Toggle toggleButton; // トグルボタンをここにアタッチ
private void Update()
{
// Toggleボタンのアクティブ状態をチェックしてプログレスバーを表示・非表示にする
if (toggleButton != null && progress != null)
if (toggleButton != null && ProgressCenter != null)
if (toggleButton != null && ProgressBase != null)
{
progress.gameObject.SetActive(toggleButton.isOn);
}
}
}