Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. Dismiss Notice

Terrain Help

Discussion in 'Editor & General Support' started by ContainsBeans, May 4, 2021.

  1. ContainsBeans

    ContainsBeans

    Joined:
    May 7, 2020
    Posts:
    2
    So I recently watched a Brackeys video on procedural terrain generation and I'm having a bit of trouble.
    It's giving me the error "NullReferenceException: Object reference not set to an instance of an object"
    It says It's on line 20. Here's my code help me if you can please!

    using UnityEngine;

    public class PerlinNoise : MonoBehaviour
    {
    public int depth = 20;

    public int width = 256;
    public int height = 256;

    public float scale = 20f;

    void Start()
    {
    Terrain terrain = GetComponent<Terrain>();
    terrain.terrainData = GenerateTerrain(terrain.terrainData);
    }

    TerrainData GenerateTerrain(TerrainData terrainData)
    {
    terrainData.size = new Vector3(width, depth, height);
    terrainData.SetHeights(0, 0, GenerateHeights());
    return terrainData;
    }

    float[,] GenerateHeights ()
    {
    float[,] heights = new float[width, height];
    for (int x = 0; x < width; x++)
    {
    for (int y = 0; y < height; y++)
    {
    heights[x, y] = CalculateHeight(x, y);
    }
    }

    return heights;
    }

    float CalculateHeight (int x, int y)
    {
    float xCoord = x / width * scale;
    float yCoord = y / height * scale;

    return Mathf.PerlinNoise(xCoord, yCoord);
    }
    }
     
  2. Hazmat61

    Hazmat61

    Joined:
    Jan 2, 2022
    Posts:
    1
    That is also hapening to me
     
  3. Kurt-Dekker

    Kurt-Dekker

    Joined:
    Mar 16, 2013
    Posts:
    36,762
    Let me assure you and everybody else who reads this:

    Posting in the forum about a NullReference Error is NEVER HELPFUL.

    Only YOU can figure out the problem, and here is how:

    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
     
    PWPeter likes this.