这是一个简单的脚本,可以在我的游戏中转动锯片。问题在于,一次在场景中大约有18个活动刀片。我正在努力消除任何滞后的可能性。这让我想知道在“更新”中使用这样的脚本是否会导致延迟?
public class SawBladesRotate : MonoBehaviour
{
public bool GameOver;
public GameObject Player;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
GameOver = Player.GetComponent<PlayerController>().GameOver;
if(GameOver == false)
{
transform.Rotate(new Vector3(0, 0, -45) * Time.deltaTime);
}
}
}
答案 0 :(得分:1)
将此方法放在Start
方法顶部作为类字段
private PlayerController playerController;
并将其放入Start
:
playeController = Player.GetComponent<PlayerController>()
然后重新使用引用:
private void Update()
{
if(playerController.GameOver) return;
//...
}
其余的都很好,但是当然它总是完全取决于您的用例。
更高效的方法是直接统一引用组件:
[SerializeField] private PlayerController playerController;
现在,您只需将Player GameObject拖放到检查器中的该字段中,即可摆脱GetComponent
调用。