Skip to content

Unity Providers ​

1. 概要 ​

R3.Unity は、Unity の PlayerLoop と時間スケールに対応した FrameProvider / TimeProvider を提供します。時間・フレーム系ファクトリやオペレーターに渡すことで、Unity の各 PlayerLoop タイミングで処理できます。

2. UnityFrameProvider ​

ProviderPlayerLoop タイミング
UnityFrameProvider.InitializationInitialization
UnityFrameProvider.EarlyUpdateEarlyUpdate
UnityFrameProvider.FixedUpdateFixedUpdate
UnityFrameProvider.PreUpdatePreUpdate
UnityFrameProvider.UpdateUpdate
UnityFrameProvider.PreLateUpdatePreLateUpdate
UnityFrameProvider.PostLateUpdatePostLateUpdate
UnityFrameProvider.TimeUpdateTimeUpdate
UnityFrameProvider.PostFixedUpdatePostFixedUpdate

3. UnityTimeProvider ​

UnityTimeProvider には通常の Time.time ベース、Time.unscaledTime ベース、Time.realtimeSinceStartup ベースの Provider が用意されています。

種類例
TimeUnityTimeProvider.Update
IgnoreTimeScaleUnityTimeProvider.UpdateIgnoreTimeScale
RealtimeUnityTimeProvider.UpdateRealtime

各 PlayerLoop タイミングごとに Initialization、EarlyUpdate、FixedUpdate、PreUpdate、Update、PreLateUpdate、PostLateUpdate、TimeUpdate の Provider が用意されています。

4. SetDefaultObservableSystem ​

csharp
public static void SetDefaultObservableSystem()

public static void SetDefaultObservableSystem(
    Action<Exception> unhandledExceptionHandler)

R3 の既定の FrameProvider / TimeProvider / 未処理例外ハンドラを Unity 向けに設定します。通常は R3.Unity の初期化処理で利用されます。

5. サンプルコード ​

csharp
Observable.IntervalFrame(1, UnityFrameProvider.FixedUpdate)
    .Subscribe(_ => Simulate())
    .AddTo(this);

Observable.Timer(TimeSpan.FromSeconds(1), UnityTimeProvider.UpdateIgnoreTimeScale)
    .Subscribe(_ => Show())
    .AddTo(this);