Diretório de artigos
Confundir
Ou seja, quando definimos uma função InvokeRepeating na função Start e depois definimos uma operação básica em Update, o que devemos fazer quando queremos controlar conjuntamente o movimento de ida e volta de um objeto?
Em outras palavras, como o sistema é compilado?
análise de código
Aqui forneço dois códigos. Vamos dar uma olhada na diferença.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SimpleLogic : MonoBehaviour
{
public float speed = 1f;
// Start is called before the first frame update
void Start()
{
InvokeRepeating("DoSomesing", 2,2);
}
// Update is called once per frame
void Update()
{
Debug.Log("***this is Update ***" + Time.time);
transform.Translate(0, speed * Time.deltaTime, 0, Space.Self);
}
void DoSomesing()
{
Debug.Log("***use Dosing ***"+ Time.time);
//transform.Translate(0, -1*speed * Time.deltaTime, 0, Space.Self);
speed = 0 - speed;
}
}
另一个代码和它非常像
usando System.Collections;
usando System.Collections.Generic;
usando UnityEngine;
classe pública SimpleLogic: MonoBehaviour
{ velocidade de flutuação pública = 1f;
// Start is called before the first frame update
void Start()
{
InvokeRepeating("DoSomesing", 2,2);
}
// Update is called once per frame
void Update()
{
Debug.Log("***this is Update ***" + Time.time);
transform.Translate(0, speed * Time.deltaTime, 0, Space.Self);
}
void DoSomesing()
{
Debug.Log("***use Dosing ***"+ Time.time);
transform.Translate(0, -1*speed * Time.deltaTime, 0, Space.Self);
//speed = 0 - speed;
}
}
A diferença entre esses dois códigos é apenas uma linha, então você sabe qual deles pode realmente alcançar o movimento de ida e volta?
Na verdade, o primeiro código está correto
explicação específica
Ou seja, nosso Update executa cada frame, e InvokeRepeating só roda em um horário específico, então só podemos colocar os pontos-chave para controlar a operação do objeto em
速度
InvokeRepeating, e o código que controla o progresso deve ser colocado em Update ., afinal, temos que avançar a cada quadro!