Faddy Geschrieben 9. April 2015 Melden Share Geschrieben 9. April 2015 Hallo, vielleicht liegt es an den späten Stunden oder ich hab grad irgendwie n Brett vorm Kopp! Ich möchte, während ich eine Notiz ins GUI Blende die Bewegung deaktivieren. Also, Mouselook deaktivieren. Dachte ich, nix leichter als das. Gibts ja schließlich tausend Threads zu. Nun habe ich folgendes Script: private MouseLook mouseLookx; private MouseLook mouseLooky; private bool mouseBreak = false; . . . void Awake () { mouseLookx= GameObject.Find("First Person Controller").GetComponent<MouseLook>(); mouseLooky= GameObject.Find("Main Camera").GetComponent<MouseLook>(); } . . . void Update () { wenn ich ne Taste drück, dann mouseBreak true if (mouseBreak) { mouseLookx.enabled = flase; mouseLooky.enabled = false; } else { mouseLookx.enabled = true; mouseLooky.enabled = true; } Jetzt sagte er mir aber die ganze Zeit: NullReferenceException: Object reference not set to an instance of an object ReadDiary.Update () (at Assets/scripts/ReadDiary.cs:45) Die beiden GameObjekte besitzen jeweils ein MouseLook-Script. Steuer ich das falsch an? Oder ist der Variablentyp MouseLook hier falsch? Ich meine sogar, ich hätte das in einem früheren Projekt schon einmal so ähnlich als Pausenmenü genutzt. Seh das grad aber irgendwie nicht... Oo Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
jashan Geschrieben 9. April 2015 Melden Share Geschrieben 9. April 2015 Das hier dürfte schonmal nicht kompilieren: mouseLookx.enabled = flase; ... hast du das abgetippt oder kopiert? Die Frage wäre dann auch, was genau Zeile 45 von ReadDiary ist - dort tritt die NullReferenceException ja auf. Am ehesten würde ich vermuten, dass die Objekte "First Person Controller" bzw. "Main Camera" bei dir anders heissen. Oder du hast mehrere Objekte namens "Main Camera", und das, das dir von Find geliefert wird hat kein MouseLook-Objekt. Ist ohne die konkrete Szene schwer zu sagen - aber ich denke mit diesen Infos müsstest du es hinbekommen ... Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Faddy Geschrieben 9. April 2015 Autor Melden Share Geschrieben 9. April 2015 Das hier dürfte schonmal nicht kompilieren: mouseLookx.enabled = flase; ... hast du das abgetippt oder kopiert? Die Frage wäre dann auch, was genau Zeile 45 von ReadDiary ist - dort tritt die NullReferenceException ja auf. Am ehesten würde ich vermuten, dass die Objekte "First Person Controller" bzw. "Main Camera" bei dir anders heissen. Oder du hast mehrere Objekte namens "Main Camera", und das, das dir von Find geliefert wird hat kein MouseLook-Objekt. Ist ohne die konkrete Szene schwer zu sagen - aber ich denke mit diesen Infos müsstest du es hinbekommen ... abgetippt... steht natürlich false Zeile 45 ist der Block if (mouseBreak) { mouseLookx.enabled = flase; mouseLooky.enabled = false; } else { mouseLookx.enabled = true; mouseLooky.enabled = true; } Ich hab das ganze Projekt abgesucht, ob da ein zweites Mal der Name vergeben wir. Hab nix gefunden. Auch über findgamobjectwithtag und dann nach "Player", was ja auch einmalig ist. Den Namen geändert in FPC und Cam. Hat alles nix gebracht. EDIT: Hab jetzt auch mal ne neue Szene erstellt. Nur ne Plane, den First Person über Prefab, und das Objekt mit dem Script über Prefab. Derselbe Fehler. Also doppelter Name ist wohl ausgeschlossen. :/ Und noch ein Edit: Hab gesehen, dass ich folgende Warnung bekomm: Assets/scripts/ReadDiary.cs(10,17): warning CS0436: The type `MouseLook' conflicts with the imported type `MouseLook'. Ignoring the imported type definition Das wären diese beiden Zeilen: 10-> private MouseLook mouseLookx; 17-> wäre eine Kommentarzeile danach kommt void Awake () { mouseLookx = GameObject.FindGameObjectWithTag ("Player").GetComponent<MouseLook> (); mouseLooky = GameObject.FindGameObjectWithTag ("MainCamera").GetComponent<MouseLook> (); } Und weils grad so schön ist, noch ein Edit: Ich hab den ganzen Mouselook-Shizzle jetzt einfach mal mit nem Javascript als kleines Pausescript versucht. Und siehe da, es geht. var isPause : boolean; var FPS : Transform; function Start () { } function Update () { if(Input.GetKeyDown(KeyCode.E)) { isPause = !isPause; } if (isPause) { Time.timeScale = 0; FPS.GetComponent(MouseLook).enabled = false; } else { Time.timeScale = 1; FPS.GetComponent(MouseLook).enabled = true; } } zum testen hatte ich hier das mouselook-script auf der Cam gelöscht und dem auf dem FPC beide Achsen zugewiesen. Hab ich in C# probiert, und geht auch nicht. Dachte einen kurzen Moment, dass es das sein könnte Also wie gesagt, mir ging es hier ausschließlich um die mouselook-Deaktivierung. Was muss ich den in C# machen um das funktionsfähig zu machen? Will da jetzt deswegen nicht anfangen die Scriptsprachen zu mischen. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Ricky-W Geschrieben 10. April 2015 Melden Share Geschrieben 10. April 2015 Was ich g esehen habe, wurde auch ein Buchstabe vertauscht. if (mouseBreak) { mouseLookx.enabled = flase; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< mouseLooky.enabled = false; } else { mouseLookx.enabled = true; mouseLooky.enabled = true; } Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Hrungdak Geschrieben 10. April 2015 Melden Share Geschrieben 10. April 2015 abgetippt... steht natürlich false <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Das hat Faddy schon um 00:30 geklärt. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Faddy Geschrieben 12. April 2015 Autor Melden Share Geschrieben 12. April 2015 Keiner ne Idee? Wie gesagt, hab das jetzt eine Javascript für eingebaut. Würde das aber gerne ändern. Link zu diesem Kommentar Auf anderen Seiten teilen More sharing options...
Tiwaz Geschrieben 13. April 2015 Melden Share Geschrieben 13. April 2015 Interessant wäre jetzt wo dein Problem jetzt ganz genau liegt.. Findest du denn überhaupt die Main Camera und den FPC? Mach einfach mal Debug.Log(GameObject.FindGameObjectWithTag("Player")); und guck was dabei raus kommt ^^ Oder leg ne public GameObject an und weise der das zu.. Wenn da was gespeichert wird, würde ich vermuten, dass es mit der Warnung zusammenhängt (die kommt mir ziemlich suspekt vor.. würde sogar direkt darauf tippen, dass die den Grund angibt) Du kannst auch mal die Mouselook Variablen auf public stellen und denen direkt im Editor ihre Werte zuweisen und schaun ob's funktioniert ^^ Wobei ich jetzt echt verwundert wäre, wenn das nicht funktionieren würde ^^ 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.