Unity 지연 실행 코드의 우아한 방식
2752 단어 unity
일반적으로 Invoke 및 InvokeRepeating 방법이 사용됩니다.말 그대로 첫 번째는 한 번, 두 번째는 중복 집행이다.
다음 정의를 참조하십시오.
void Invoke(string methodName, float time);
첫 번째 파라미터는 방법명 (문자열 형식 주의) 이며, 더 편리한 의뢰가 아닙니다.두 번째는 몇 초 딜레이야?한 번만 실행합니다.
void InvokeRepeating(string methodName, float time, float repeatRate);
InvokeRepeating의 두 번째 매개 변수는 몇 초 지연 후 시작되는지, 세 번째 매개 변수는 매번 실행 간격의 초수입니다.
너는 이 두 가지 방법에 폐단이 있다는 것을 발견했니? 바로 반드시 방법명을 입력해야 한다는 것이다.즉, 만약 내가 어떤 코드를 집행할 시간을 늦추고 싶다면, 반드시 코드를 어떤 방법에 넣고, 이 Invoke 또는 InvokeRepeating 방법으로 집행해야 한다.
이렇게 하면 상하문 변수, 속성에 대한 인용이 특히 불편할 뿐만 아니라 파라미터를 전달할 수 없다!!!니마, 그에게 무슨 소용이 있겠는가?
나는 네가 반드시 이런 방법을 사용한 적이 있다고 추측한다.맞아,'협동', 꽤 높은 이름으로 들리네.
IEnumerator를 반환값으로 하는 방법을 Start Coroutine으로 실행합니다. 보통 비동기 다운로드에 사용되며, 시간이 많이 걸리고 게임 카드가 죽지 않는 경우에 사용됩니다.
또 하나의 좋은 종류인 WaitFor Seconds. 그래, 그것은 시간 지연에 사용되는 구조 함수이다.
자, 쓸데없는 소리 하지 마세요. 다음은 제가 직접 사용하는 시간 지연 방법입니다. 한 종류에 넣고 정적 방법으로 존재합니다.언제든지, 어디서든 시간을 지정할 수 있는 코드입니다.
using UnityEngine;
using System.Collections;
using System;
public class DelayToInvoke : MonoBehaviour
{
public static IEnumerator DelayToInvokeDo(Action action, float delaySeconds)
{
yield return new WaitForSeconds(delaySeconds);
action();
}
}
어떻게 사용하나요?
예를 들어 내가 NGUI의 Button을 클릭하면
void OnClick()
{
StartCoroutine(DelayToInvoke.DelayToInvokeDo(() =>
{
Application.LoadLevel(“Option”);
}, 0.1f));
}
봤지?
Application.LoadLevel(“Option”);실행을 지연시키려는 코드 세그먼트입니다.
너는 아주 길게 쓸 수 있다.Action, 마음대로 하세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Unity 최적화1. 프레임마다 처리하는 것을 최대한 피한다. 예를 들면: 5프레임당 한 번 처리로 변경할 수 있습니다. 2. 정시 반복 처리는 InvokeRepeating 함수로 이루어집니다. 예를 들어 0.5초 동안 시작한 후 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.