- Home /
Scene Lag when first running a certain script, but then returns to normal performance afterwards?
I have a script for my player's input. The profiler is reading that the Update method for that script is using too much CPU and lags the scene quite alot when it is first used, however after it has run the fist time, the performance returns back to the normal desired speed. after running the script the first time there is no lag when running it again. I am a bit confused and would like to know how I can optimize this script to run at the normal speed the first time when the scene is loaded.
Below Is the update method for that script. Please comment if you have any suggestions or experience with this sort of thing. Thank you.
void Update()
{
float scrollWheel = Input.GetAxis("Mouse ScrollWheel");
camController.Zoom(scrollWheel);
bool Grounded = player.checkGroundcontact();
if(!isArmDragging && HandlePinchToZoom())
{
isCameraDragging = false;
return;
}
if(!Grounded)
{
camController.MoveTo(player.CamTarget.transform.position);
}
if (Input.GetMouseButtonDown(0) && Grounded)
{
camController.StorePosition();
Vector3 mouseScreenPos = Input.mousePosition;
Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(mouseScreenPos);
Collider2D hit = Physics2D.OverlapPoint(mouseWorldPos, LayerMask.GetMask("Arm Click"));
if (hit != null)
{
isArmDragging = true;
mouseScreenPos = Camera.main.WorldToScreenPoint(player.flingOffsetStartTransform.position);
mouseScreenPos.z = 0;
}
else
{
isCameraDragging = true;
}
mouseDragStart = mouseScreenPos; // in screen space
}
else if (Input.GetMouseButton(0) && Grounded)
{
if(isArmDragging)
{
Vector3 delta = ScreenToWorldDelta(Input.mousePosition, mouseDragStart);
delta = ConstrainDelta(delta);
delta = TransformDelta(delta);
if (aimingTracker != null)
{
aimingTracker.MouseDragged(delta);
}
player.UpdateAiming(delta, GetNormalizedDelta(delta));
player.graphics.Stretchy.SetActive(true);
player.graphics.Transitions.SetActive(false);
}
else if(isCameraDragging)
{
Vector3 delta = ScreenToWorldDelta(Input.mousePosition, mouseDragStart);
if(invertCamera)
{
camController.UpdatePosition(delta);
}
else
{
camController.UpdatePosition(-delta);
}
}
}
else if (Input.GetMouseButtonUp(0) && Grounded)
{
if(isArmDragging)
{
Vector3 delta = ScreenToWorldDelta(Input.mousePosition, mouseDragStart);
delta = ConstrainDelta(delta);
delta = TransformDelta(delta);
if(aimingTracker != null)
{
aimingTracker.EraseDots();
}
if(player != null)
{
player.graphics.Stretchy.SetActive(false);
player.graphics.Transitions.SetActive(true);
player.graphics.Prelaunch(delta);
player.ApplyForce(delta);
player.graphics.Ignite();
}
}
else if (isCameraDragging)
{
camController.EndDrag();
}
isArmDragging = false;
isCameraDragging = false;
mouseDragStart = new Vector3(0,0,0);
}
}
Answer by Owen-Reynolds · Dec 10, 2014 at 06:42 AM
Comment stuff out until it speeds up? Normal method is to start by commenting about half -- like an entire else or something.
But it might not really be Update's fault. Might just be "yer a big fella, let me unload a bunch of old Start and Awake functions, to make room."
Your answer
Follow this Question
Related Questions
How do I get my game to run faster? 4 Answers
Animator.Update has high CPU usage 2 Answers
Profiler: Crowdmanager.update? 1 Answer
UI Text Optimization? Updating Geometry seems to be slow 0 Answers
Is there a Per-Mesh-Profiler somewhere? 2 Answers