UniRx의 5가지 간단한 샘플(Buton을 누른 후 이동하는 GameObjet)
전면(Skip 및 SkipWhile)
다음(가입 중지)
Buton의 onClick과 연결
지금까지 Every Update는 내용을 간단하게 볼 수 있어서 그걸 썼어요.
첫 번째로 강력한 활동이라고 말했기 때문에 활동과 같다.
Every Update는 UniRx 등록부의 한 곳일 뿐입니다.원래 각양각색의 로그인지가 있는데, 문서를 보면 알 수 있다.(놀랍다)
미리 준비하다
이번에는 지금까지의 스프릿 게임 오브젝트 외에도 버튼이 제작됐다.
ClickButon은 게임에서 처음으로 오른쪽으로 이동하는 버튼입니다.
TwoClickButon은 파란색 GameObject에서 오른쪽으로 이동하지만 가장 처음 반응하지 않는 단추만 있습니다
타겟
첫 번째 GameObject에서 오른쪽으로 이동하는 버튼만 있어요.
Button.onClick.ASObservable()를 클릭하면 숫자대로 등록할 수 있는 주소를 얻을 수 있습니다.따라서 여기에 무브(1f, 0)를 등록하고 오른쪽으로 이동한다.
첫 번째만 눌렀을 경우 대상이 이동하는 단추는 이벤트에서 해야 하며 눌렀는지 여부를 표시하는 표시가 있어야 합니다.
하지만 UniRx의 말은 First로 표현할 수 있다.
따라서 코드는 다음과 같다.
ClickButtonusing UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UniRx;
public class ClickButton : Base {
public Button Button;
// Use this for initialization
void Start () {
gameObject.transform.position = new Vector2(0, 1f);
//クリックされた最初の一回だけ値をプッシュ
Button.onClick.AsObservable().First()
.Subscribe(l => Move(1f, 0));
}
}
이렇게 이벤트에서 소박하고 귀찮을 뿐이라고 말하는 것도 유닛의 좋은 방법이다.
아, 버튼 주사기에서 로그인하세요.
첫 번째 버튼만 반응
반대로 스킵을 사용하면 이쪽도 괜찮아요.
TwoClickButtonusing UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UniRx;
public class TwoClickButton : Base
{
public Button Button;
// Use this for initialization
void Start()
{
gameObject.transform.position = new Vector2(0, 1.5f);
//1回目はスキップする
Button.onClick.AsObservable().Skip(1)
.Subscribe(u => Move(1f, 0));
}
}
실행 결과
그래서 다양한 버튼이 만들어졌다.
참, 여기서 실행할 때 파란색 사이다를 끄고 버튼을 누르면 어떨까요?
MissingReferenceException: The object of type 'TwoClickButton' has been destroyed but you are still trying to access it.
Your script should either check if it is null or you should not destroy the object.
잠깐만요.
어쨌든 등록된 활동을 수행하면 게임Object가 죽기 때문에 잘못된 것이다.
마음대로 등록을 해제할 수 없습니다!
꼭 메시지 메일 같은 것도 이렇게 수호 프로세스로 돌아갈 것 같아서요.
다음은 이 방면의 말을 하자.
잡담은 그만두어라
전혀 상관없는 말이지만 공개 멤버에 대해서는
Unity 표준 명명 규칙은 lowerCamel입니다.
C#의 명명 규칙은 Pascal입니다.
뭐냐면요.
저는 C#er입니다. 그래서 Pascal을 사용했는데 어떤 게 더 많았나요?
참고로 privte는lower Camel입니다.
Reference
이 문제에 관하여(UniRx의 5가지 간단한 샘플(Buton을 누른 후 이동하는 GameObjet)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Marimoiro/items/bba05b7b1e15f0c804a8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UniRx;
public class ClickButton : Base {
public Button Button;
// Use this for initialization
void Start () {
gameObject.transform.position = new Vector2(0, 1f);
//クリックされた最初の一回だけ値をプッシュ
Button.onClick.AsObservable().First()
.Subscribe(l => Move(1f, 0));
}
}
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using UniRx;
public class TwoClickButton : Base
{
public Button Button;
// Use this for initialization
void Start()
{
gameObject.transform.position = new Vector2(0, 1.5f);
//1回目はスキップする
Button.onClick.AsObservable().Skip(1)
.Subscribe(u => Move(1f, 0));
}
}
Reference
이 문제에 관하여(UniRx의 5가지 간단한 샘플(Buton을 누른 후 이동하는 GameObjet)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Marimoiro/items/bba05b7b1e15f0c804a8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)