Search Issue Tracker

Fixed in Unity 5.6.0

Votes

0

Found in

5.5.0b7

Issue ID

838681

Regression

Yes

Script updater updating incorrectly when an object is named like a class and the class becomes static

Scripting

-

-

Priority: 3Not yet prioritized for a release

-

Severity: 3Workaround is possible

To reproduce:
1. Open attached project in 5.4
2. Notice that line 107 of the script RPGController.cs creates an object of type NavMeshAgent called NavMeshAgent
3. Notice that lines 629 and 630 refer to this object like this:

if (NavMeshAgent.remainingDistance <= NavMeshAgent.radius + 0.1F ||

(!NavMeshAgent.pathPending && NavMeshAgent.remainingDistance <= NavMeshAgent.stoppingDistance &&

(!NavMeshAgent.hasPath || NavMeshAgent.velocity.sqrMagnitude == 0f)))

4. Open the attached project in 5.5, and let the script updater do its work
5. Notice that lines 629 and 630 get changed to this:

if (NavMeshAgent.remainingDistance <= NavMeshAgent.radius + 0.1F ||

(!NavMeshAgent.pathPending && NavMeshAgent.remainingDistance <= NavMeshAgent.stoppingDistance &&

(!NavMeshAgent.hasPath || UnityEngine.AI.NavMeshAgent.velocity.sqrMagnitude == 0f)))

The important part here is that NavMeshAgent.velocity.sqrMagnitude (an object) gets changed to UnityEngine.AI.NavMeshAgent.velocity.sqrMagnitude (a static class), producing incorrect results and compilation errors.

All about bugs

View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.