上海虹口龙之梦项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

67 lines
2.5 KiB

using System; // require keep for Windows Universal App
using UnityEngine;
namespace UniRx.Triggers
{
[DisallowMultipleComponent]
public class ObservableTrigger2DTrigger : ObservableTriggerBase
{
Subject<Collider2D> onTriggerEnter2D;
/// <summary>Sent when another object enters a trigger collider attached to this object (2D physics only).</summary>
void OnTriggerEnter2D(Collider2D other)
{
if (onTriggerEnter2D != null) onTriggerEnter2D.OnNext(other);
}
/// <summary>Sent when another object enters a trigger collider attached to this object (2D physics only).</summary>
public IObservable<Collider2D> OnTriggerEnter2DAsObservable()
{
return onTriggerEnter2D ?? (onTriggerEnter2D = new Subject<Collider2D>());
}
Subject<Collider2D> onTriggerExit2D;
/// <summary>Sent when another object leaves a trigger collider attached to this object (2D physics only).</summary>
void OnTriggerExit2D(Collider2D other)
{
if (onTriggerExit2D != null) onTriggerExit2D.OnNext(other);
}
/// <summary>Sent when another object leaves a trigger collider attached to this object (2D physics only).</summary>
public IObservable<Collider2D> OnTriggerExit2DAsObservable()
{
return onTriggerExit2D ?? (onTriggerExit2D = new Subject<Collider2D>());
}
Subject<Collider2D> onTriggerStay2D;
/// <summary>Sent each frame where another object is within a trigger collider attached to this object (2D physics only).</summary>
void OnTriggerStay2D(Collider2D other)
{
if (onTriggerStay2D != null) onTriggerStay2D.OnNext(other);
}
/// <summary>Sent each frame where another object is within a trigger collider attached to this object (2D physics only).</summary>
public IObservable<Collider2D> OnTriggerStay2DAsObservable()
{
return onTriggerStay2D ?? (onTriggerStay2D = new Subject<Collider2D>());
}
protected override void RaiseOnCompletedOnDestroy()
{
if (onTriggerEnter2D != null)
{
onTriggerEnter2D.OnCompleted();
}
if (onTriggerExit2D != null)
{
onTriggerExit2D.OnCompleted();
}
if (onTriggerStay2D != null)
{
onTriggerStay2D.OnCompleted();
}
}
}
}