OnSceneGUI bug

I’m using Unity 5.0.0f4. Don’t know if this is a bug, but… inside my OnSceneGUI method:


  1. public void OnSceneGUI() {
  2. Vector3 screenPos = ConvertScreenToWorldPos(Event.current.mousePosition)
  3. if (Event.current.type == EventType.MouseMove)
  4. {
  5. Handles.color = Color.green;
  6. Handles.CircleCap(0, screenPos, Quaternion.identity, 20); // This does’nt get called
  7. Debug.Log(“mouse move”);
  8. }
  9. Handles.CircleCap(0, Vector3.zero, Quaternion.identity, 20); // Outputs a white circle. Weird.
    10.}

This is driving me crazy.

a. Line 7 writes to console every frame the mouse moves. (that’s okay)
b. Line 6 IS NOT drawing the circle. (that’s not okay)
c. Line 9 DRAWS the circle, but it’s color is white, despite of what Line 5 says.

So, what the hell is happening? Is this a bug?

Hey there,

question b. Are you sure it is not drawing the circle? Maybe screenPos is not what you expecting it to be and it’s being draw somewhere else. Because the code is right. Verify this by changing the position to Vector3.zero that you know it will be drawn in a place you can see.

question c. Every time you call CircleCap you have to define the colour before it.

Hi, thank you for your answer. The answer for ‘c’ makes sense, thank you a lot.

But ‘b’ is still making me go nuts.

So, changing the circle position (inside the if statement) to Vector3.zero still is not making the circle appear. This is the new code:

1 if (Event.current.type == EventType.MouseMove)
2 {
3 Handles.color = Color.green;
4 Handles.CircleCap(0, Vector3.zero, Quaternion.identity, 20);
5 Debug.Log(“This is weird!”)
6 }

Line 5 keeps showing in the console everytime the mouse moves, which is fine. But the Circle in line 4 refuses to get drawn, which is very weird.

Any ideas?