2025-11-05 05:16:06 +08:00
|
|
|
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)
|
2025-11-05 05:16:06 +08:00
|
|
|
{
|
|
|
|
|
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)
|
2025-11-05 05:16:06 +08:00
|
|
|
{
|
|
|
|
|
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)
|
2025-11-05 05:16:06 +08:00
|
|
|
{
|
|
|
|
|
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)
|
2025-11-05 05:16:06 +08:00
|
|
|
{
|
|
|
|
|
var disposable = new CompositeDisposable();
|
|
|
|
|
|
|
|
|
|
// 值 → InputField
|
2025-11-10 16:59:40 +08:00
|
|
|
source.SubscribeToInputField(inputField).AddTo(disposable);
|
2025-11-05 05:16:06 +08:00
|
|
|
|
|
|
|
|
// InputField → 值
|
|
|
|
|
inputField.OnValueChangedAsObservable().Subscribe(_value =>
|
|
|
|
|
{
|
|
|
|
|
float result;
|
|
|
|
|
if (float.TryParse(_value,out result))
|
|
|
|
|
source.Value = result;
|
|
|
|
|
}).AddTo(disposable);
|
|
|
|
|
|
|
|
|
|
return disposable;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|