2016-04-25 5 views
0

Ich entwerfe ein Ego-Shooter in Einheit. Ich habe FPS-Controller verwendet, um den Player zu steuern. Daher bleibt mein Mauszeiger die meiste Zeit unsichtbar und wenn ich Escape drücke, wird er sichtbar. Aber das Problem ist, wenn ich eine neue Szene aus einer Szene laden, die FPS-Controller verwendet, bleibt der Mauscursor unsichtbar, obwohl die neue Szene keinen FPS-Controller verwendet. Außerdem wird durch Drücken von Escape der Mauszeiger in der neuen Szene nicht angezeigt.Mauscursor ist in Einheit unsichtbar

Antwort

1

Sie können auf verschiedene Arten damit umgehen, aber hier ist der Kern des Problems: Ändern des Cursor.visible Feld ist nicht Szene abhängig, und es wird nicht zurückgesetzt, wenn eine neue Szene geladen wird. Aus diesem Grund müssen Sie Cursor.visible = true; auf der Ebene, die Sie laden.

Ich würde vorschlagen, ein einfaches Skript wie CursorVisibility machen, die diese Zeilen lesen würde:

public class CursorVisibility : MonoBehaviour 
{ 
    void OnLevelWasLoaded(int level) 
    { 
     if (FindObjectOfType<FirstPersonController>() != null) 
     { 
      Cursor.visible = false; 
     } 
     else 
     { 
      Cursor.visible = true; 
     } 
    } 
} 

Platz dieses auf einem leeren Spielobjekt in jeder Szene und Sie haben Cursor Sichtbarkeit automatisch.

Sie können auch nur Platz die Funktion:

void OnLevelWasLoaded(int level) 
{ 
    if (FindObjectOfType<FirstPersonController>() != null) 
    { 
     Cursor.visible = false; 
    } 
    else 
    { 
     Cursor.visible = true; 
    } 
} 

in einem anderen Skript, das ohne einen ersten Person-Controller, um die Szene einzigartig ist.

So stellen Sie sicher, dass Sie den Namen des Skripts ersetzen mit dem, was die FPS-Controller tatsächlich gestattet :)

+0

Bitte geben Sie die Antwort markieren, wenn es Ihnen geholfen. Danke :) –

+0

Hat nicht für mich gearbeitet; Was aber funktioniert hat, war 'Cursor.visible = true; Screen.lockCursor = false; ' an den Start-Handler eines Skripts. – dirkk0