Unity - Object reference not set to an instance of an object?

Hallo, weiß jemand wie ich in Unity diesen NullReferenceException Fehler beheben bzw. fixen kann? Kenne mich noch nicht so richtig mit C# und Unity aus. Daher weiß ich auch nicht, wie ich mit diesen Fehler umgehen kann. Habe in Unity 3D eine Shop Scene gemacht, und habe dann dieses Script für die Buttons und den Shop allgemein gemacht, um Skins kaufen zu können und die Game Coins mit den Buttons zu verbinden. Ich habe ein "Debug.Log" erstellt. Um zu schauen, dass wenn ich auf den Button klicke, in der Konsole dann steht als Beispiel "Button wurde geklickt!" doch stattdessen steht dort immer als Fehler "NullReferenceException: Object reference not set to an instance of an object

ShopManager.Start () (at Assets/Scripts/Best/ShopManager.cs:15)"

Hier ist das Script für den Shop, und die Buttons. (C#):

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


public class ShopManager : MonoBehaviour
{


    public int kontostand;
    public Text kontostandText;


    // Start is called before the first frame update
    void Start()
    {
        kontostandText.text = kontostand.ToString();
    }


    public void ItemKaufen(int itemPreis)
    {
        // Kontostand überprüfen
        if(kontostand >= itemPreis)
        {
            Debug.Log("Item wurde gekauft");
            // Item zum Inventar hinzufügen
            // Kontostand neu berechnen
            kontostand = kontostand - itemPreis;
            // Kontostand aktualisieren
        }
        
    }

Ich hatte mir ein Tutorial dazu angeschaut wie man es behebt, doch leider ohne Erfolg.

Weiß jemand, was das bedeutet/heißt und wie man es am einfachsten beheben kann, und wo da im Script der Fehler ist? Es soll ja angeblich in Zeile 15 sein. Ich hoffe, ihr versteht meine Message dazu ein wenig. Vielen Dank im voraus! :D

Bild zu Frage
Computer, Fehler, programmieren, C Sharp, Programmiersprache, Unity 3D, Visual Studio, Error Code, Unity, Spiele und Gaming
Kamera Movement in Unity?

Hallo,

ich bin relativ neu in Unity und bin gerade dabei, eine Szene zu erstellen, wobei man die Kamera, wenn man die rechte Maustaste gedrückt hält, verschieben kann.

Die Szene ist isotropisch, weshalb die Kamera auch orthographisch ist.

[SerializeField] private Camera cam;
private Vector3 dragOrigin = Vector3.zero;
public float speed = 10;
    
void Update(){
    if(Input.GetMouseButtonDown(1)){
        dragOrigin = cam.ScreenToWorldPoint(Input.mousePosition);
    }
    if(Input.GetMouseButton(1)){
        Vector3 difference = cam.ScreenToWorldPoint(Input.mousePosition) - cam.transform.position;
        Vector3 targetPosition = dragOrigin - difference;
            
        cam.transform.position = Vector3.Lerp(cam.transform.position, targetPosition, speed * Time.deltaTime);
    }
}

Das funktioniert eigentlich auch, nur gibt es das Problem, dass sich der y-Wert der Kamera auch ändert. Die sollte immer auf dem gleichen y-Wert bleiben.

Wenn ich

targetPosition.y = cam.transform.position.y;

schreibe, bleibt zwar die Kamera auf der gleichen y-Position, aber die Kamera verschiebt sich nach oben und unten langsamer.

Wie kann ich den Code umschreiben, dass sich bei der Kamera nur die x-/ und z-Position ändert und das Verschieben in allen Richtungen gleich schnell geht?

Danke im Voraus.

Software, Kamera, programmieren, C Sharp, Visual Studio, Unity, Game-Developement
Unity Character Controller verbuggt?

Hey Leute,

ich habe mir gerade dieses:

(44) Basic Third Person Character Controller in Unity - Unity C# Tutorial 2022 - YouTube

Tutoral für third person controller angeschaut. Nach programmierung der Scripts habe ich aber zwei Bugs:

Mein Character "slided" weiter über den Boden auch wenn ich aufhöre w zu drücken. Man kann sich das vorstellen wie auf einer Eisbahn.

Obwohl ich eine Rigidbody eingefügt habe, fällt der Character nicht auf den Boden! Mein leicht abgeänderter Code:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class player : MonoBehaviour
{
  public Animator playerAnim;
  public Rigidbody playerRigid;
  public float w_speed, wb_speed, olw_speed, rn_speed, ro_speed;
  public bool walking;
  public Transform playerTrans;
  void FixedUpdate()
  {
    if (Input.GetKey(KeyCode.W))
    {
      playerRigid.velocity = transform.forward * w_speed * Time.deltaTime;
    }
    if (Input.GetKey(KeyCode.S))
    {
      playerRigid.velocity = -transform.forward * wb_speed * Time.deltaTime;
    }
  }
  void Update()
  {
    if (Input.GetKeyDown(KeyCode.W))
    {
       playerAnim.SetTrigger("walk");
       playerAnim.ResetTrigger("idle");
       walking = true;
       //steps1.SetActive(true);
    }
    
    if (Input.GetKeyUp(KeyCode.W))
    {
      playerAnim.ResetTrigger("walk");
      playerAnim.SetTrigger("idle");
      walking = false;
  //steps1.SetActive(false);
    }
    
    if (Input.GetKeyDown(KeyCode.S))
    {
      playerAnim.SetTrigger("walk");
      playerAnim.ResetTrigger("idle");
      walking = true;
    }
    
    if (Input.GetKeyUp(KeyCode.S))
    {
      playerAnim.ResetTrigger("walk");
      playerAnim.SetTrigger("idle");
      walking = false;
    }
    
    if (Input.GetKey(KeyCode.A))
    {
      playerTrans.Rotate(0, -ro_speed * Time.deltaTime, 0);
    }
    
    if (Input.GetKey(KeyCode.D))
    {
      playerTrans.Rotate(0, ro_speed * Time.deltaTime, 0);
    }
  }
}

Danke für alle Antworten

Computer, programmieren, Unity, Spiele und Gaming

Meistgelesene Fragen zum Thema Unity