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 zum Beitrag
Computer, Fehler, programmieren, C Sharp, Programmiersprache, Unity 3D, Visual Studio, Error Code, Unity, Spiele und Gaming
Wie soll ich das denn jetzt Handeln?

Hallo. Ich hoffe die Programmiererschaft ist aus ihrem kleinem Schläfchen erwacht und kann mir hier etwas weiterhelfen. Ich mache (immernoch) eine Coding-Challenge. Dachte sie ist Lustig, langsam wird sie Sinnlos .__.

Erstmal die zurzeitige Stage:

An sich wurde alles gesagt. Das Problem mit den max. 10 Packages hab ich bereits gelöst. Nun bin ich aber bei der byte abfrage ... Die ist dann schon Lustiger. Hier mal meine add Funktion.

void add(Package package) {
  // Check if package already in map.
  std::list < std::string > info_list({
    package.name,
    std::to_string(package.versionMajor),
    std::to_string(package.versionMinor)
  });
  if (saved_packages.count(info_list)) {
    return;
  }
  uint32_t used_size = 0;
  for (it_helper = saved_packages.begin(); it_helper != saved_packages.end(); it_helper++) {
    used_size += it_helper -> second.size;
  }
  // INFO: saved_packages.size() starts (idk why) by 2. So 12 means 10 packages.
  if (saved_packages.size() >= 12 && used_size >= 100) {
    throw std::exception();
  }
  saved_packages.insert(std::pair < std::list < std::string > , Package > (info_list, package));
}

Simpel ... Naja. Also das && falsch ist, dass weiß ich. Wollte es nur damit mal ausprobieren. Also bei "&&" kommt folgendes raus:
"The add method threw no exception despite exceeding the limit of 10 packages." und es macht Sinn. Schließlich war das Maximum erreicht, die bytes aber noch frei. Dennoch sollte man es ja nicht zulassen. Wenn ich jetzt aber || mache:

"The add method threw an exception before reaching the limit of 100 bytes." was auch Sinn macht. Denn die 10 Packete wurden vermutlich gesendet, bevor die 100 Bytes erreicht waren. Nun ... Was jetzt? Ich hab tatsächlich keine einzige Idee gerade, währe dankbar für bisschen Hilfe. Danke im Vorraus und lg.

Bild zum Beitrag
PC, Computer, Internet, Software, Technik, Programmierer, programmieren, Cplusplus, CPP, Programmiersprache, Softwareentwicklung, Visual Studio, Challenge
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

Meistgelesene Fragen zum Thema Visual Studio