2017-05-21 1 views
0

Im Moment befolge ich ein YouTube-Tutorial, wie man ein Labyrinth-Spiel in Unity mit C# -Skripten erstellt. Während eines Teils des Tutorials verwendet der Uploader eine Funktion aus dem Skript "GameManager" und ruft sie im Skript "PlayerMovement" auf. in dem Video funktioniert alles gut, aber wenn ich versuche, es zu implementieren, gibt es mir "CS0122 'GameManager.CompleteLevel()" ist aufgrund seiner Schutzstufe nicht zugänglich "C# Funktion unzugänglich aufgrund des Schutzlevels

Hier sind einige Code-Schnipsel, um mein Problem zu visualisieren:

"PlayerMovement"

void OnTriggerEnter(Collider other) 
{ 
    if (other.transform.tag == "Goal") 
     GameManager.CompleteLevel(); 
} 

"GameManager"

public class GameManager : MonoBehaviour { 
    public static int currentScore; 
    public static int highScore; 

    public static int currentLevel =0; 
    public static int unlockedLevel; 

    void CompleteLevel() 
    { 
     currentLevel++; 
     SceneManager.LoadScene(currentLevel); 
    } 
} 

Jede Hilfe wird sehr geschätzt :)

+0

der Fehler auf der PlayerMovement Seite geschieht privat ist, wenn es GameManager nennen will. KomplettesLevel(); –

Antwort

0

Sie shoul ein Verfahren mit öffentlichem Modifikator markiert

public void CompleteLevel() 

Ohne Modifikator es (für den Einsatz in der Klasse nur)

+0

danke das wurde der CS0122 Fehler los. Ich wurde mit einem anderen Fehler getroffen, aber es in öffentliche statische void zu ändern schien es zu beheben –

+0

@TylerStMartin Ich denke, Sie sollten verstehen, was statische und Objekt/Member-Methoden sind. Es ist wichtig, dieses Verständnis zu bekommen, oder Sie werden später auf alle Arten von Programmablaufproblemen stoßen. – Farhan

Verwandte Themen