使用访问变量会对性能产生影响。c#unity3d中的参数

使用访问变量会对性能产生影响。c#unity3d中的参数,c#,oop,unity3d,singleton,C#,Oop,Unity3d,Singleton,如果有人问这个问题,我很抱歉,因为这可能很简单,或者答案很明显 你好,在我的游戏中,有几行代码,其中每个引用都来自一个GameManager.cs,这是一个单例类 例如: public void someFunction() { int a = GameManager.instance.healthController.something_1; GameManager.instance.healthController.updateHealth(); GameManage

如果有人问这个问题,我很抱歉,因为这可能很简单,或者答案很明显

你好,在我的游戏中,有几行代码,其中每个引用都来自一个
GameManager.cs
,这是一个单例类

例如:

public void someFunction()
{
    int a = GameManager.instance.healthController.something_1;
    GameManager.instance.healthController.updateHealth();
    GameManager.instance.healthController.updateArrows();
    GameManager.instance.healthController.updateRange();
} 
以上代码是否会对性能产生任何影响,因为我正在使用。在多个位置访问变量和函数

我是否需要进行任何更改以改进编码风格和性能(如果有)

我是否需要进行任何更改以改进编码风格和性能 如果有的话

。你的代码看起来不错。如果需要一个实例,那么就这样做。它不会影响游戏的性能

访问另一个脚本时,您应该担心的是重复执行
GetComponent()
GameObject.FindXXX()
来查找脚本,而不是缓存脚本,但您没有这样做,所以这很好

public void someFunction()
{
    int a = GameManager.instance.healthController.something_1;
    GameManager.instance.healthController.updateHealth();
    GameManager.instance.healthController.updateArrows();
    GameManager.instance.healthController.updateRange();
} 
可以改写为:

public void someFunction()
{
    var controller = GameManager.instance.healthController;
    int a = controller.something_1;
    controller.updateHealth();
    controller.updateArrows();
    controller.updateRange();
} 
以上代码是否会对性能产生任何影响,因为我正在使用。到 在多个位置访问变量和函数


使用我建议的代码版本,性能会稍好一些(因为它不需要继续“查找”实例和健康控制器)。但是,实际上,您不太可能注意到它。

是的,我认为您可以在类级别从方法中声明变量“a”。然后避免每次调用该方法时都创建变量

这是一个很好的游戏编程实践

    private int a;
    public void someFunction()
    {
        a = GameManager.instance.healthController.something_1;
        GameManager.instance.healthController.updateHealth();
        GameManager.instance.healthController.updateArrows();
        GameManager.instance.healthController.updateRange();
    }