Unity에서 버튼을 연타하고 동시에 누르는 대책을 고려하다
두 번은 몰랐어.
처음에는 이거였어요.
UI의 긴 문자열 처리 고려
일의 발단
• 단독 버튼으로 모듈 단일 연격 및 압력조절 대책 강구
・그리고 눌렀을 때 표지를 세우고, 그 표지가 서 있을 때는 눌러도 처리하지 않는다
· static로 표시되면 다른 독립된 단추 구성 요소도 동작하지 않습니다
・버튼을 누르면 콜백은 비동기 처리가 가능하며 종료 후 깃발을 꺾으면 처리를 기다리셔도 됩니다
나는 이와 같은 물건을 만들고 싶다. 아무 생각도 하지 않고 그것을 매개 변수에 맡기고 싶다
움직였어!
기쁘지만 아이누마레이터는 재활용이 안 되기 때문에 두 번째 이후로는 움직이지 않는다.
아무튼 그렇습니다. 잘 모르는 asyn await를 시도해 보세요.
나는 이것이 시작이라고 생각한다.
자기도 놀란 장작타로의 처리
IEnumarator 를 적절하게 매개변수로 사용
public void SetOnClick(IEnumerator onClick){
태그 작업 전후 처리IEnumerator OnClick(System.Collections.IEnumerator onClick)
{
_isProgress = true;
yield return onClick;
_isProgress = false;
}
그걸 버튼 청취자에 등록하세요._button.onClick.AddListener(
() =>
{
PlaySe(SeList.TestSe);
if (_isProgress) return;
StartCoroutine(OnClick(onClick));
});
그에게 3초를 기다리게 하다이렇게 등록하는 느낌.
public IEnumerator OnClickButton3()
{
Debug.Log("OnClickButton3 Start");
yield return new WaitForSeconds(3);
Debug.Log("OnClickButton3 End");
}
이렇게 누르면 버튼 → 누를 수 없음 → 통신 대기 → 결과 처리 후 버튼 유효화유사한 하류를 형성하다
예정했어
처음이었으면 좋겠다.
아싸 아싸 해보자.
일단 Async/await에 대해서 원래 이해를 못했기 때문에.
https://www.slideshare.net/UnityTechnologiesJapan/unite-tokyo-2018asyncawait
완전히 이해하다
이해하고 싶어!
매개변수 변경
public void SetOnClick(Func<Task> onClick)
청중에게 async로 단추를 등록하고 await on Click 앞뒤에 태그 동작을 추가합니다 _button.onClick.AddListener(
async () =>
{
PlaySe((int)SeList.TestSe);
if (_isProgress) return;
_isProgress = true;
await onClick();
_isProgress = false;
});
3초만 기다려주세요.private async Task AsyncMethod()
{
Debug.Log("AsyncMethod Start");
await Task.Delay(3000);
Debug.Log("AsyncMethod End");
}
그런 단추를 생성합니다.button = AddComponent<ButtonBase>(_rootObject.transform);
button.Setup(
res,
new Vector2(120, 250),
new Vector2(200f, 50f),
"Async Method Callback");
button.SetOnClick(AsyncMethod);
button.FrameIn(SceneComponent.FrameInStartPos.Left);
무심결에 움직였어!
async/await 하기 어려운 일
어쨌든, 이렇게 하면 버튼 내부에서 처리를 기다릴 수 있다
자원 읽기 등 처리를 할 때 이엘드 리턴에서 자주 기다리죠. (안 해요?)
에서 이 단추를 등록하는 방법은 자원 읽기 등을 통해 완료를 기다리는 것입니다
var ret = Resources.LoadAsync<T>(path);
ret.completed += res =>
{
if (res.isDone)
{
progress = false;
Debug.Log("LoadAsync isDone");
}
};
bool isCancel = false;
var cancelToken = tokenSource.Token;
await Task.Run(() =>
{
//クソオブクソ処理
while (progress)
{
if (cancelToken.IsCancellationRequested)
{
isCancel = true;
return;
}
}
}, cancelToken);
이렇게 되게 그런 고민이 있어요.UniRx는 WaitWhile 이런 것도 되고요. await.
종교적인 이유로 도입이 안 될 때.
그리고 Task는 WebGL이 움직이지 않기 때문에 반드시 별도로 고려해야 한다
응,응
Await 리소스로 읽을 수 있도록 만들까요?
끝맺다
항목에 따라 버튼을 누르는 동시에 제어도 크게 다르다
어느 것이나 다 좋은 점도 있고 나쁜 점도 있다
그리고 나쁜 점이 많아요.
일반적인 동시에, 연속 대책을 어떻게 하면 좋을까
이번 버튼 자체는 로고를 들고 있지만 이벤트시스템에서는 사용하는 게 좋을까요?
만약 개별적으로 사용하지 않는다면,interactable를 가짜로 설정할 수 있다고 생각합니다
스태프들이 UI의 유효하지 않은 제어를 일부러 쓰게 하면 설정과 해제를 잊어버릴 수도 있어요.
개인적으로 이 부분은 체계적으로 이해해 주셨으면 좋겠습니다.
Reference
이 문제에 관하여(Unity에서 버튼을 연타하고 동시에 누르는 대책을 고려하다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wm2w/items/f6f17dd0d5640a7bc691텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)