c# - 这个脚本资源密集吗?如果是这样,如何改进?
问题描述
这是一个简单的脚本,可以在我的游戏中转动锯片。问题是现场一次大约有 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);
}
}
}
解决方案
Start
把它作为类字段放在方法的顶部
private PlayerController playerController;
这变成Start
:
playeController = Player.GetComponent<PlayerController>()
然后重新使用参考:
private void Update()
{
if(playerController.GameOver) return;
//...
}
其余的都很好,但当然它总是完全取决于你的用例。
更有效的是直接在统一中引用组件:
[SerializeField] private PlayerController playerController;
现在您可以简单地将 Player GameObject 拖放到 Inspector 中的该字段中,并且可以摆脱GetComponent
调用。
推荐阅读
- python - 使用python api在弹性搜索中转储批量数据
- c++ - 在创建此函数以从 C++ 中的单链表中搜索元素时,我在哪里犯了错误?
- lua - 如何修复我在 Roblox Lua 中制作的脚本?
- android - 如何使用 2 个不相互独立的单独微调器更新 TextView?
- sql-server - 需要帮助让 Microsoft 本地网关与 Azure 分析服务一起使用
- html - 如何使悬停覆盖文本固定到图像
- laravel-5 - 为 Laravel 网站延迟 JS 脚本的最简单方法是什么?
- php - 使用 file_get_content php 获取搜索结果的内容
- c# - 字节溢出评估为零而不是异常?
- php - 如何从 PHP 7.2 降级到 PHP 5.6 EC2 linux