Unity3D: Wie kann ich: "Für das nicht statische Feld, die Methode oder die Eigenschaft "Component.gameObject" ist ein Objektverweis erforderlich" beheben?
Das hier ist mein ganzes Programm:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CoinCollector : MonoBehaviour
{
private void OnTriggerEnter(Collider other)
{
if (Collider.gameObject.tag == "coin")
{
print("Grabbing Coin...");
Destroy(Collider.gameObject);
}
}
}
Alles was es machen soll ist, dass mein First Person Character eine Münze aufsammeln kann. Aber es wird immer der gleiche Fehler angezeigt:
Fehler CS0120 Für das nicht statische Feld, die Methode oder die Eigenschaft "Component.gameObject" ist ein Objektverweis erforderlich.
-
und ich habe keine Ahnung, wie ich das Problem beheben soll.
2 Antworten
Du verwechselst Klassennamen mit Parameternamen. Du meinst vermutlich:
if (other.gameObject.tag == "coin")
{
print("Grabbing Coin...");
Destroy(other.gameObject);
}
Jedes Objekt in C# hat einen Typ (ignorieren wir anonyme Typen mal). Der Parameter deiner Methode OnTriggerEnter hat genau einen Parameter, nämlich einen Wert vom Typ Collider namens other. Wenn du mit dem übergebenen Wert interagieren möchtest, musst du den Namen nehmen, nicht den Typ. Deswegen auch die Fehlermeldung.
Anstatt "collideer.gameobject..." "other.gameobject..." aufrufen?
Collider ist ne Klasse. Aber du brauchst ja das Objekt. Welches du ja als Parameter der Methode reingereichst bekommt.
Hier Mal ein gleichniss für deinen Code.
Autos haben ne Farbe.
Was du nun fragst ist: welche Farbe hat Auto.
Die Frage kann man natürlich nicht beantworten weil wir nicht wissen welches spezielle Auto wir uns anschauen.
In deinem Code ist es nicht anders.