访问变量时是否会有性能影响。参数在c#unity3d

问题描述:

我很抱歉,如果这个问题被问到,因为这可能很简单,或可能是答案是显而易见的。访问变量时是否会有性能影响。参数在c#unity3d

你好,在我的游戏中有几行代码,其中每个参考都是从单个类的GameManager.cs得到的。

例如:

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() 
{ 
    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(); 
} 

请问上面的代码,因为我使用对性能有任何影响。到 在几个地方访问变量和函数。

表现会略更好我建议代码的版本(因为它并不需要保持“抬头” instancehealthController) - 自local variables are faster。但在实践中,很可能你会注意到它是非常

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

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

你应该担心访问另一个脚本什么是反复GetComponent<HealthController>()GameObject.FindXXX()找到脚本,而不是缓存他们,但你不这样做,那么它的罚款。

是的,我认为你可以在方法级别中声明变量'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(); 
    }