Files
TuanTuan-Engine/Assets/GameScripts/Main/UI/UnityUIBindings.cs

52 lines
1.6 KiB
C#
Raw Normal View History

using R3;
using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace R3
{
public static class UnityUIBindings
{
2025-11-05 20:56:21 +08:00
public static IDisposable SubscribeToScrollbar(this ReactiveProperty<float> source, Scrollbar scrollbar)
{
return source.Subscribe(scrollbar, static (x, s) => s.value = x);
}
2025-11-10 16:59:40 +08:00
public static IDisposable SubscribeToInputField(this ReactiveProperty<float> source, InputField inputField)
{
return source.Subscribe(inputField, static (x, t) => t.text = x.ToString());
}
2025-11-05 20:56:21 +08:00
public static IDisposable BindToScrollbar(this ReactiveProperty<float> source, Scrollbar scrollbar)
{
var disposable = new CompositeDisposable();
// 值 → Scrollbar
source.SubscribeToScrollbar(scrollbar).AddTo(disposable);
// Scrollbar → 值
scrollbar.OnValueChangedAsObservable().Subscribe(_value => { source.Value = _value; }).AddTo(disposable);
return disposable;
}
2025-11-05 20:56:21 +08:00
public static IDisposable BindToInputField(this ReactiveProperty<float> source, InputField inputField)
{
var disposable = new CompositeDisposable();
// 值 → InputField
2025-11-10 16:59:40 +08:00
source.SubscribeToInputField(inputField).AddTo(disposable);
// InputField → 值
inputField.OnValueChangedAsObservable().Subscribe(_value =>
{
float result;
if (float.TryParse(_value,out result))
source.Value = result;
}).AddTo(disposable);
return disposable;
}
}
}