// 멤버 변수를 인스펙터 필드에 노출
[SerializeField]
private IntReactiveProperty rpInt = new IntReactiveProperty(100);
[SerializeField]
private LongReactiveProperty rpLong = new LongReactiveProperty(100);
[SerializeField]
private ByteReactiveProperty rpByte = new ByteReactiveProperty(100);
[SerializeField]
private FloatReactiveProperty rpFloat = new FloatReactiveProperty(100);
[SerializeField]
private BoolReactiveProperty rpBool = new BoolReactiveProperty(true);
[SerializeField]
private StringReactiveProperty rpString = new StringReactiveProperty("string");
[SerializeField]
private Vector2ReactiveProperty rpVector2 = new Vector2ReactiveProperty(Vector2.zero);
[SerializeField]
private ColorReactiveProperty rpColor = new ColorReactiveProperty(Color.clear);
// ReactiveProperty
ReactiveProperty<int> rp = new ReactiveProperty<int>(10);
rp.Value = 0;
rp.Subscribe(x => Debug.Log(x));
rp.Value = 10;
//ReactiveCollection
//ReactiveCollection<T>는 ReactiveProperty와 같은 것이며, 상태의 변화를 알리는 기능이 내장 된 List<T>
ReactiveCollection<int> rc = new ReactiveCollection<int>();
rc.ObserveAdd().Subscribe(x =>
{
Debug.Log(string.Format("ReactiveCollection Add [{0}] = {1}", x.Index, x.Value));
});
rc.ObserveRemove().Subscribe(x =>
{
Debug.Log(string.Format("ReactiveCollection Remove [{0}] = {1}", x.Index, x.Value));
});
rc.Add(10);
rc.Add(20);
rc.Add(30);
rc.Remove(20);
//ReactiveDictionary<T1, T2>
ReactiveDictionary<int, string> rd = new ReactiveDictionary<int, string>();
rd.ObserveAdd().Subscribe(x =>
{
Debug.Log(string.Format("ReactiveDictionary Add [{0}] = {1}", x.Key, x.Value));
});
rd.ObserveRemove().Subscribe(x =>
{
Debug.Log(string.Format("ReactiveDictionary Remove [{0}] = {1}", x.Key, x.Value));
});
rd.Add(1, "red");
rd.Add(2, "green");
rd.Add(3, "blue");
rd.Remove(2);
//Observable.Create의 예
// 0에서 100까지 10 단위로 값을 발행하는 스트림
Observable.Create<int>(observer =>
{
Debug.Log("Start");
for (var i = 0; i <= 100; i += 20)
{
observer.OnNext(i);
}
Debug.Log("Finished");
observer.OnCompleted();
return Disposable.Create(() =>
{
Debug.Log("Dispose");
});
}).Subscribe(x => Debug.Log(x));
// Observable.Start의 예
// 주어진 블록을 스레드에서 실행
Observable.Start(() =>
{
//Google웹 페이지 요청
var req = (HttpWebRequest)WebRequest.Create("https://google.com");
var res = (HttpWebResponse)req.GetResponse();
using (var reader = new StreamReader(res.GetResponseStream()))
{
return reader.ReadToEnd();
}
})
.ObserveOnMainThread() // Unity 메인 스레드로 전환
.Subscribe(x => Debug.Log(x)); // write google web page
// Observable.Timer / TimerFrame의 예
// Observable.Timer : 일정 시간 후에 메시지를 발행
Debug.Log("Observable.Timer / TimerFrame Test");
Observable.Timer(System.TimeSpan.FromSeconds(2))
.Subscribe(_ => Debug.Log("2초 경과"))
.AddTo(this);
// 5초 이후에 1초간격으로 호출
Observable.Timer(System.TimeSpan.FromSeconds(5), System.TimeSpan.FromSeconds(1))
.Subscribe(x => Debug.Log("주기적으로 수행 : " + x.ToString()))
.AddTo(this);
// 60frame이후 30frame마다 주기적으로 수행
Observable.TimerFrame(60, 30)
.Subscribe(x => Debug.Log("frame마다 주기적으로 수행 : " + x.ToString()))
.AddTo(this);
피드 구독하기:
댓글 (Atom)
-
대상이 되는 이미지를 SVG(Scalable Vector Graphics) 이미지로 변환 - 각종 툴이나 웹상에서 바로 바꿔주는 다양한 방법이 있음(검색 검색~) - 찾은거 하나 : http://image.online-convert.com/c...
-
MQTT mosquitto 서버 설치와 간이 테스트 https://mosquitto.org 모스키토 설치 brew install mosquitto 모스키토 서비스 실행 brew services start mosquitto 모스키...
-
Unity3d에서 Rust 라이브러리를 생성하여 rust함수를 호출해 보기 Rust를 사용하여 라이브러리를 생성/빌드 한 뒤 유니티에서 Plugin으로 dll import하여 함수 사용 -- Rust -- 숫자 2개를 더해 리턴하는 간단한 ...
댓글 없음:
댓글 쓰기