VelocityMovement icon indicating copy to clipboard operation
VelocityMovement copied to clipboard

Optimization: GetComponent

Open fami-fish opened this issue 2 years ago • 0 comments

GetComponent

Unity's GetComponent() function is very expensive. You should cache the Rigidbody as such:

private Rigidbody rb;
private void Start() {
    rb = GetComponent<Rigidbody>();
}

Ideally you would not want to run GetComponent every frame in Update; especially multiple in times. This will (probably) increase fps (since unity does not need to look it up multiple times before the next frame) and cpu load.

Re-Assignment

The code snippet below includes two IF checks; two assignments and two re-assignments

onGround = CheckGround();

//Different acceleration values for ground and air
float curAccel = accel;
if (!onGround)
    curAccel = airAccel;

//Ground speed
float curMaxSpeed = maxSpeed;

//Air speed
if (!onGround)
    curMaxSpeed = maxAirSpeed;

It could be refactored to include only two IF checks and two assignments (and its concise)

onGround = CheckGround();
float curAccel = onGround ? accel : airAccel;
float curMaxSpeed = onGround ? maxSpeed : maxAirSpeed;

These are just a few suggestions to make your game more accessible to those on lower spec hardware :) Remember, optimization is easier to do when you write code rather than refactor it later on

fami-fish avatar Dec 01 '22 22:12 fami-fish