Unity3D: The name `FadeToNextLevel' does not exist in the current context - Wo liegt mein Fehler?

2 Antworten

In C# liegen alle Klassen, Methoden und Variablen in sogenannten Namensräumen (engl.:"namespaces"). Der Fehler, den du bekommst, sagt dir, dass die Methode FadeToNextLevel() nicht in deinem aktuellen Namensraum, der Klasse, in der du gerade arbeitest, gibt.

Ok also ich greife auf das GameObject zu (ist in Unity ein EmptyObject) und danach auf dessen Script. Die Funktion FadeToNextLevel(); ist im Original Script auch public.

Aus diesen Angaben schließe ich, dass die Methode FadeToNextLevel() eine Methode der Klasse LevelChanger ist.

Du speicherst dieses Skript oben in einer Variable und weist diese in der Methode Start() zu. Wenn du die Methoden dieses Objektes nutzen willst, musst du auch angeben, in welchem Objekt diese Methoden sind:

LevelChangerScript.FadeToNextLevel();

Übersetzt heißt das: „Rufe die Methode FadeToNextLevel() auf, die in der Klasse LevelChanger liegt, von der wir hier eine Instanz namens LevelChangerScript haben."

Das funktioniert nur, wenn FadeToNextLevel() eine Objektmethode ist. Ist es eine Klassenmethode, dann geht es wieder anders. Wegen solchen Problemen lernt man erst die Grundlagen, bevor man an etwas wie ein Spiel geht.

Hey :) Vielen Dank für deine Antwort! Das hat mir auch regex9 geraten, jedoch geht dann leider gar nichts mehr :( Hast du villeicht eine Idee woran das liegen könnte?

0
@KomischerLappen

Keine Ahnung, du sagst uns nicht, was denn nun nicht geht und wo die Probleme liegen, wie Fehlermeldungen.

0
@Crysali

Ja irgendwie hat die komplette start Funktion nicht mehr funktioniert....
Aber egal, ich habe es jetzt einfach anders herum gemacht und von meinem LevelChanger Script aus die Berührung zwischen Spieler und "Win" Collider, den Score und die Lebenspunkte überprüft und dann direkt die FadeToNextLevel(); Methode aufgerufen! Danke nochmal! :)

0

Ist LevelChangerScript das Skript, welches die Methode FadeToNextLevel besitzt? Du kannst Methoden nur über ein Objekt (oder in bestimmten Fällen nur über eine Klasse) aufrufen. Setze dich mit den Grundlagen von C# auseinander, dann sind solche Dinge klar.

LevelChangerScript.FadeToNextLevel();

Vielen Dank für deine Antwort! :) Ich setzte mich doch gerade mit den Grundlagen auseinander oder? Zumindest ein bisschen ;)

Leider funktioniert jetzt das komplette PlayerScript nicht mehr... Hast du ne Idee warum?

0
@KomischerLappen

Nein, den Eindruck bekommt man leider nicht.

Dazu kann ich nichts sagen.

Aber noch ein anderer Tipp: Alle sichtbaren Properties/Felder auf deinem Skript erscheinen im Unity Objekt Editor - also auf dem GameObject, auf dem du das Skript draufgeschoben hast. Via Drag&Drop lassen sich nun Startwerte für diese Eigenschaften setzen. Statt das Objekt LevelFade zu suchen (was ein aufwendiger Prozess ist), könntest du das GameObject auch einfach auf das Feld ziehen.

0
@regex9

Ich habe es jetzt einfach anders herum gemacht und von meinem LevelChanger Script aus die Berührung zwischen Spieler und "Win" Collider, den Score und die Lebenspunkte überprüft und dann direkt die FadeToNextLevel(); Methode aufgerufen! Danke nochmal für deine Hilfe! :)

0

Aktiven Status eines GameObjects umdrehen ( Unity, C#)?

Ich möchte den Status meiner Panel ( Enabled, Disabled) meiner UI umdrehen, wenn ich einen Button klicke.

using UnityEngine;
using System.Collections;

public class Button_PanelEvent : MonoBehaviour {
    public GameObject Panel;
    public void OnButton(){
        Panel.SetActive( !Panel.activeSelf);
    }
}

Warum funktioniert das nicht ? Bei dem Event OnButton müsste nun das definierte GameObject, das Panel, seinen Status umdrehen, funktioniert aber nicht. Ist das Skript so richtig und sollte funktionieren, liegt der Fehler an anderer Stelle ?

...zur Frage

Habe eine Unity 3D Network frage?

Was machen die drei genannten Attribute genau ? welches tut was ?

[Command] [SyncVar] [ClientRPC]

was bewirkt jedes einzelne? bitte eine kleine erklärung : )

Dankeschön !

...zur Frage

Wie bearbeitet man die Farbe von einzelnen Text objekten in Unity?

Ich habe ein Script, bei dem Strings in einer Liste eingegeben werden und dann in einem Unity UI Text Component angezeigt werden, alles funktioniert bis jetzt schon und gut, doch ich möchte auch die Farben und den Style vom Text ändern, wie geht das? Geht das überhaupt mit meiner Variante? Wenn nicht wie dann?

public class News : MonoBehaviour {

public Text NewsBar;
public Text NewsLog;

public Animator NewsAnimator;

public string currentNewsReport;
public List <string> NewsReports;
public string[] NewsReportsArray;
public string NewsReportsString;

void Start(){
    AddNewsReport ("<b>News Log:</b\n");
    AddNewsReport ("<color=#00ffffff>You started playing Domination...</color=#00ffffff>");
}

public void AddNewsReport(string NewsReport){
    currentNewsReport = NewsReport;
    NewsReports.Add (currentNewsReport);
    NewsReportsArray = NewsReports.ToArray ();
    NewsReportsString = string.Join ("\n", NewsReportsArray);
    NewsLog.text = NewsReportsString;
}

public void PlayNewsReport(string NewsReport){
    NewsAnimator.Play("News Animation", -1, 0);
    NewsBar.text = NewsReport;
    AddNewsReport (NewsReport);
}

}

...zur Frage

Szenenwechsel Unity 3d?

Guten Abend zusammen :),

ich habe ein Problem mit dem Szenenwechsel bei Unity3D (Version 5.2.1f1).

Ich möchte ein 2D Jump 'n' Run-Spiel programmieren und der Szenenwechsel, also das Laden des nächsten Levels soll erfolgen, wenn mein Charackter in einen bestimmten Bereich hineintritt.

Also habe ich mir ein Objekt erstellt, diesem einen Collider verpasst und einen Haken bei der Checkbox "Is Trigger" gesetzt. Diesem Objekt habe ich folgendes Skript verpasst (JavaScript):

function OnCollisionEnter (player: Collision) { if(player.gameObject.tag == "Player") { Application.LoadLevel(4); }

}

Level 4 ist dabei das zu ladende Level.

Mein Problem ist jedoch nun, dass es nicht funktioniert, keine Sorge, mein Character hat den Tag Player und ebenfalls einen Collider, der Skriptname enthält keine Leerzeichen oder Umlaute, entdeckt jemand vielleicht sonst noch einen Fehler den ich gemacht habe ?

Vielen Dank für jede Antwort :)

...zur Frage

Unity3D ArgumentException: The Object you want to instantiate is null?

Hallo liebe Programmierfreunde da draußen. :)

Ich arbeite gerade an einem Ich-bin-ein-Ball-und-sammle-kleine-Würfel-ein-Spiel, bin aber noch ziemlicher Anfänger. Vor allem was das Coden angeht.

Ich möchte gerne, dass beim Einsammeln der Würfel ein Licht, also ein neues GameObject entsteht. Dafür habe ich dieses Script geschrieben:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CreateObject : MonoBehaviour
{
  public Transform Spawnpoint;

  public GameObject Prefab;

  private void Start()
  {
  }

  void OnTriggerEnter()
  {
    Instantiate(Prefab, Spawnpoint.position, Spawnpoint.rotation);
  }
}

Natürlich habe ich mehrere aufsammelbare Würfel im Level. Jeder von ihnen hat dieses Script und jeweils ein eigenes EmptyGameObject als SpawnPoint. Das Licht ist ein Prefab und alle Würfel nutzen dieses eine.

Ich habe also einen Original-Würfel erstellt, den dann per Copy & Paste vervielfacht, alle in der Welt verteilt und jeder Kopie einen eigenen SpawnPoint für sein Licht gegeben.

So, wenn ich jetzt aber das Spiel starte, werden bei allen Würfeln, außer dem ersten Original-Würfel, unendlich Klone des Licht-Prefabs erstellt, ohne, dass ich irgendetwas mache. Dabei bekam ich diese Fehlermeldung:

UnassignedReferenceException: The variable Spawnpoint of CreateObject has not been assigned.

Nach ein bisschen Recherche habe ich diese Zeile in void start hinzugefügt:

Prefab = GameObject.FindGameObjectWithTag("SpawnLight");

So, jetzt war diese Fehlermeldung weg, aber leider auch meine Lichter. Wenn ich jetzt einen Würfel aufsammle, bleibt es dunkel. Dafür bekomme ich eine nette Fehlermeldung, welche mich wissen lässt:

ArgumentException: The Object you want to instantiate is null.

Ich habe leider keine Ahnung, was ich machen muss, um meine netten, kleinen Lichter zurückzubekommen... 😟

Ich freue mich über Hilfe jeglicher Form und bin mir sicher, dass es irgendwo da draußen jemanden gibt, der mir den Weg zum Licht zeigen und ebnen kann.

Vielen Dank schon einmal

KomischerLappen 😃

...zur Frage

Unity Terrain Texture ingame verändern?

Also ich habe ein Spiel, dass je nach Jahreszeit automatisch regnen/schneien lässt. Da ist es auch sinnvoll die Textur vom Terrain zu Schnee/Grass zu ersetzen. Ich habe gefühlt 10 Jahre im Internet gesurft und habe nichts gefunden. Deshalb bin ich jetzt auf die Idee gekommen, dass vielleicht Leute mir bei Gutefrage.net helfen können. Wie kann ich machen, dass ich die Terrain Texture in C# ändern kann?

...zur Frage

Was möchtest Du wissen?