我需要根据数组(data_int [])中的值更改对象的比例,如果值增加,则应该增加,反之亦然。我尝试的代码可以做到这一点,但我只能看到最终结果。但是,我需要可视化循环中的每个步骤。
handleCheckbox = id => {
this.setState(state => {
items: state.items.map(item => ({
...item,
checked: item.Id === id ? !item.checked : item.checked
}))
});
};
答案 0 :(得分:2)
您可以使用Coroutine
函数来实现您的目标。
yield return new WaitForSeconds(.5f)
行将模拟等待0.5秒后才能继续。 yield return null
,yield return new WaitForEndOfFrame()
等也可以用来延迟Coroutine
的执行。可以在here中找到有关何时返回的更多信息。 This question on coroutines也可能有用。
void Start()
{
StartCoroutine(ScaleObject());
}
IEnumerator ScaleObject()
{
for (int i = 1; i < 25; i++)
{
if (data_int[i] > data_int[i - 1])
{
transform.localScale += new Vector3(0.01f, 0.01f, 0.01f);
}
else if (data_int[i] < data_int[i - 1])
{
transform.localScale += new Vector3(-0.01f, -0.01f, -0.01f);
}
yield return new WaitForSeconds(.5f);
}
}
答案 1 :(得分:1)
整个循环在1帧内执行,您无法逐步查看。您可以在方法Update
例如:
// initialize your iterator
private int i = 1;
// I removed the checks on MyFunctionCalled because this may be irrelevant for your question
void Update()
{
// use an if instead of a for
if (i < 25)
{
if (data_int[i] > data_int[i - 1])
{
transform.localScale += new Vector3(0.01f, 0.01f, 0.01f);
}
else if (data_int[i] < data_int[i - 1])
{
transform.localScale += new Vector3(-0.01f, -0.01f, -0.01f);
}
// this is the end of the supposed loop. Increment i
++i;
}
// "reset" your iterator
else
{
i = 1;
}
}