sternenhimmelglanz Geschrieben 4. Mai 2021 Melden Share Geschrieben 4. Mai 2021 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Pickups : MonoBehaviour { RaycastHit hit; public float Distance = 4.0f; public GameObject PickupMessage; public GameObject Player; private AudioSource MyPlayer; private float RayDistance; private bool CanSeePickup = false; private bool CanSeeDoor = false; public GameObject DoorMessage; public Text DoorText; // Start is called before the first frame update void Start() { PickupMessage.gameObject.SetActive(false); DoorMessage.gameObject.SetActive(false); Player.gameObject.SetActive(true); RayDistance = Distance; MyPlayer = GetComponent<AudioSource>(); } // Update is called once per frame void Update() { if (Physics.Raycast(transform.position, transform.forward, out hit, RayDistance)) { if (hit.transform.tag == "Gem") { CanSeePickup = true; if (Input.GetKeyDown(KeyCode.E)) { if (SaveScript.Gem < 3) { Destroy(hit.transform.gameObject); SaveScript.Gem += 1; } } } } else if (hit.transform.tag == "Door") { CanSeeDoor = true; if (hit.transform.gameObject.GetComponent<DoorScript>().Locked == false) { if (hit.transform.gameObject.GetComponent<DoorScript>().IsOpen == false) { DoorText.text = "Press E to open"; } if (hit.transform.gameObject.GetComponent<DoorScript>().IsOpen == true) { DoorText.text = "Press E to close"; } if (Input.GetKeyDown(KeyCode.E)) { hit.transform.gameObject.SendMessage("DoorOpen"); } } else if (hit.transform.gameObject.GetComponent<DoorScript>().Locked == true) { DoorText.text = "You need a key"; } } else { CanSeePickup = false; CanSeeDoor = false; } if (CanSeePickup == true) { PickupMessage.gameObject.SetActive(true); RayDistance = 1000f; } if (CanSeePickup == false) { PickupMessage.gameObject.SetActive(false); RayDistance = Distance; } if (CanSeeDoor == true) { DoorMessage.gameObject.SetActive(true); RayDistance = 1000f; } if (CanSeeDoor == false) { DoorMessage.gameObject.SetActive(false); RayDistance = Distance; } } } using System.Collections; using System.Collections.Generic; using UnityEngine; public class DoorScript : MonoBehaviour { private Animator Anim; public bool IsOpen = false; private AudioSource MyPlayer; public AudioClip RoomSound; public bool Room; public bool Locked; public string DoorType; // Start is called before the first frame update void Start() { Anim = GetComponent<Animator>(); MyPlayer = GetComponent<AudioSource>(); } // Update is called once per frame void Update() { if (Room == true) { DoorType = "Room"; if (SaveScript.Key == true) { Locked = false; } } } public void DoorOpen() { if (IsOpen == false) { Anim.SetTrigger("Open"); IsOpen = true; if (Room == true) { MyPlayer.clip = RoomSound; MyPlayer.Play(); } } else if (IsOpen == true) { Anim.SetTrigger("Close"); IsOpen = false; if (Room == true) { MyPlayer.clip = RoomSound; MyPlayer.Play(); } } } private void OnTriggerEnter(Collider other) { if (other.gameObject.CompareTag("Enemy")) { if (Locked == false) { if (IsOpen == false) { Anim.SetTrigger("Open"); IsOpen = true; } } } } } Hi ich habe ein Problem mit meinen Türen. Ich habe einen Quad mit einer Animation versehen, die die Tür auf uns zu gehen lässt. Außerdem habe ich diesen den Tag Door gegeben. Allerdings kommt bei mir immer die Fehlermeldung: NullReferenceException: Object reference not set to an instance of an object Pickups.Update () (at Assets/TheGame/Scripts/Pickups.cs:50) herein. Leider verstehe ich nicht warum der Tag nicht erkannt wird. Vielleicht habt ihr ja eine Idee. Vielen Dank sternenhimmelglanz Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MaZy Geschrieben 4. Mai 2021 Melden Share Geschrieben 4. Mai 2021 Mal ehrlich, würde dir helfen, aber ich hab keine Lust Dateien runterladen zu müssen um zu helfen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 4. Mai 2021 Melden Share Geschrieben 4. Mai 2021 Und warum ist das ne PDF?? Einfach den Code kopieren und hier einfügen. Klickste auf das <> neben dem Unity-Symbol und packst das da in die Box... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
sternenhimmelglanz Geschrieben 4. Mai 2021 Autor Melden Share Geschrieben 4. Mai 2021 Habe den Code jetzt eingefügt. Aber wie zeige ich hier was im Inspector steht? Vielleicht ist ja auch dort ein Fehler, den ich einfach nicht sehe... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Sascha Geschrieben 4. Mai 2021 Melden Share Geschrieben 4. Mai 2021 Einfach einen Screenshot hochladen.. aber halt ein Bild, keine PDF. Du kannst Bilder einfach in deinen Text beim Schreiben reinziehen. Da hier bei Code nicht die Zeilennummern angezeigt werden, ist es auch sinnvoll, wenn du einmal die Zeile raussuchst, in der der Fehler passiert. Der steht hinter dem Dateipfad in deiner Fehlermeldung, in diesem Fall 50. Eine potentielle NullReferenceException sehe ich aber direkt: if (Physics.Raycast( ... )) { ... } else if (hit.transform.tag == "Door") { ... } Wenn du in den else-Fall kommst, dann tust du das, weil Physics.Raycast false zurückgegeben hat. Das passiert genau dann, wenn der Raycast nichts getroffen hat. Im Anschluss fragst du aber den Tag des getroffenen Objekts ab. Da es kein getroffenes Objekt gibt, fliegt in diesem Fall eine NullReferenceException. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
sternenhimmelglanz Geschrieben 4. Mai 2021 Autor Melden Share Geschrieben 4. Mai 2021 Hallo Sascha, vielen Dank für die Erklärung, ich verstehe jetzt warum die Fehlermeldung kommt. Hast du evtl. einen Vorschlag wie ich das Problem evtl. lösen könnte? Vielen Dank im Voraus. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
MichaelH Geschrieben 4. Mai 2021 Melden Share Geschrieben 4. Mai 2021 Alles was vom Raycast abhängig ist darunter zusammenfassen: void Update() { if (Physics.Raycast(transform.position,transform.forward, out hit, RayDistance)) { if (hit.transform.tag == "Gem") { // ... } else if (hit.transform.tag == "Door") { // ... } } else { // CanSeePickup ... } } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
sternenhimmelglanz Geschrieben 4. Mai 2021 Autor Melden Share Geschrieben 4. Mai 2021 Vielen Dank es funktioniert jetzt einwandfrei. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Recommended Posts
Archiviert
Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.