Я не совсем понимаю, что вы хотите предотвратить. Я полагаю, вы хотите запретить вашему SubscribedToggle
вызову SetValueAndForceNotify
в вашем ReactiveProperty?
Затем объявите publi c IReadOnlyReactiveProperty
и управляйте личным BoolReactiveProperty
в вашем SourceToggle
классе.
public class SourceToggle : MonoBehaviour
{
private BoolReactiveProperty isOn;
private Toggle toggle;
public IReadOnlyReactiveProperty<bool> IsOn => isOn;
private void Awake()
{
toggle = GetComponent<Toggle>();
isOn = new BoolReactiveProperty(toggle.isOn);
toggle
.OnValueChangedAsObservable()
.Subscribe(b => isOn.SetValueAndForceNotify(b));
isOn.Subscribe(b => toggle.isOn = b);
}
}
public class SubscribedToggle : MonoBehaviour
{
[SerializeField]
private SourceToggle sourceToggle;
private void Start()
{
sourceToggle.IsOn
.Subscribe(b => GetComponent<Toggle>().isOn = b);
// GetComponent<Toggle>()
// .OnValueChangedAsObservable()
// .Subscribe(b => sourceToggle.IsOn.SetValueAndForceNotify(b)); // Impossible to call SetValueAndForceNotify
}
}