Search Unity

Question Referencing other script causes error, causes "void start" to become unused

Discussion in 'Scripting' started by itsalog, Oct 24, 2021.

  1. itsalog

    itsalog

    Joined:
    Oct 23, 2021
    Posts:
    1
    I'm using Unity for the first time and I've stumbled into a problem. I'm trying to make a restart button which resets the position of the player if it is pressed. To do this, I want to reference a bool from another script, the script "RestartButton"
    Here is the code for player:
    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4.  
    5. public class Player : MonoBehaviour
    6. {
    7.     public RestartButton RS;
    8.     Vector2 startingpos;
    9.     void Start()
    10.     {
    11.         startingpos = GameObject.Find("Player").transform.position;
    12.     }
    13.  
    14.     void FixedUpdate()
    15.     {
    16.         if (RS.restartscene == true)
    17.         {
    18.             transform.localPosition = startingpos;
    19.             RS.restartscene = false;
    20.         }
    21.     }
    22. }
    And here is the RestartButton code:
    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4.  
    5. public class RestartButton : MonoBehaviour
    6. {
    7.     public bool restartscene = false;
    8.     public void ActionRestart()
    9.     {
    10.         restartscene = true;
    11.     }
    12. }
    13.  
    When I attempt to load into the game, I am met with the error "NullReferenceException: Object reference not set to an instance of an object Player.FixedUpdate () (at Assets/Scripts/Player.cs:19)". When I hover over "Start" and "Fixed Update" in my Player script, it says they are both unused. Once I remove line 7, they no longer show up as unused. What is causing this?
     
  2. Kurt-Dekker

    Kurt-Dekker

    Joined:
    Mar 16, 2013
    Posts:
    38,738
    Welcome! Used and unused can be a bit wonky in Unity unless you get the Intellisense configured right. That way it knows that special methods like Start() won't be referenced, but that Unity will tickle them.

    This may help you with intellisense and possibly other Visual Studio integration problems:

    Sometimes the fix is as simple as doing Assets -> Open C# Project from Unity. Other times it requires more.

    https://forum.unity.com/threads/intellisense-not-working-with-visual-studio-fix.836599/

    Also, try update the VSCode package inside of Unity: Window -> Package Manager -> Search for Visual Studio Code Editor -> Press the Update button

    Also, this: https://forum.unity.com/threads/no-suggestions-in-vscode.955197/#post-6227874

    Once you sort that out, here is how to approach the Nullreference: it has to be solved, and there is only one way:

    The answer is always the same... ALWAYS. It is the single most common error ever.

    Don't waste your life spinning around and round on this error. Instead, learn how to fix it fast... it's EASY!!

    Some notes on how to fix a NullReferenceException error in Unity3D
    - also known as: Unassigned Reference Exception
    - also known as: Missing Reference Exception
    - also known as: Object reference not set to an instance of an object

    http://plbm.com/?p=221

    The basic steps outlined above are:
    - Identify what is null
    - Identify why it is null
    - Fix that.

    Expect to see this error a LOT. It's easily the most common thing to do when working. Learn how to fix it rapidly. It's easy. See the above link for more tips.

    You need to figure out HOW that variable is supposed to get its initial value. There are many ways in Unity. In order of likelihood, it might be ONE of the following:

    - drag it in using the inspector
    - code inside this script initializes it
    - some OTHER external code initializes it
    - ? something else?

    This is the kind of mindset and thinking process you need to bring to this problem:

    https://forum.unity.com/threads/why-do-my-music-ignore-the-sliders.993849/#post-6453695

    Step by step, break it down, find the problem.

    Here is a clean analogy of the actual underlying problem of a null reference exception:

    https://forum.unity.com/threads/nul...n-instance-of-an-object.1108865/#post-7137032