답변:
또는 모듈러스를 사용하는 하나의 라이너가 있습니다.
void Update()
{
//if you want it loop from specific start time rather than from start of the game,
//subtract said time value from Time.time argument value
if(Mathf.Repeat(Time.time, execDuration + sleepDuration) < execDuration)
executeFunction();
}
%
연산자는 종종 이상하게 행동합니다. 부동 소수점 숫자와 함께 작동하지 않거나 수학 연산에서 계수 연산에 대한 예기치 않은 또는 명백한 잘못된 결과를 제공합니다 (하드웨어 특성 반영) 정수 연산). C # / mono에서 연산자의 Repeat()
정확한 구현을 찾을 필요가 없도록보다 안전한 옵션으로 선택되었습니다 %
.
다음 코드를 테스트하지는 않았지만 아이디어를 얻습니다.
public float wakeUpDuration = 10.0f ;
public float sleepDuration = 2.0f;
private bool callFunction = true ;
private float time = 0 ;
void Update()
{
time += Time.deltaTime;
if( callFunction )
{
if( time >= wakeUpDuration )
{
callFunction = false;
time = 0 ;
}
else
{
foo(); // Your function
}
}
if( !callFunction && time >= sleepDuration )
{
callFunction = true;
time = 0 ;
}
}
deltaTime
상대적으로 짧은 경우에만 작동합니다 . 델타가 더 길면 sleepDuration
실패합니다.
코 루틴으로도 할 수 있습니다. 같은 것
public class Comp : MonoBehaviour
{
private bool _shouldCall;
Start()
{
StartCoroutine(UpdateShouldCall)
}
Update()
{
if(_shouldCall)
CallTheFunction();
}
IEnumerator UpdateShouldCall()
{
while(true)
{
_shouldCall = true;
yield return new WaitForSeconds(10);
_shouldCall = false;
yield return new WaitForSeconds(2);
}
}
}
Repeat()
와%
(모듈러스) 의 차이가 있습니까? 문서는 "이것은 모듈러스 연산자와 유사하지만 부동 소수점 숫자와 함께 작동합니다"라고 나와 있지만 모듈러스는 수레와 함께 작동합니다 ...