質問編集履歴

1 文章の修正

t2t21212

t2t21212 score 62

2019/06/12 22:05  投稿

Unity NullReferenceException
### 前提・実現したいこと
エラーを解消したい
### 発生している問題・エラーメッセージ
```
NullReferenceException: Object reference not set to an instance of an object
Map.CreateTiles () (at Assets/Script/Map.cs:45)
Map.Start () (at Assets/Script/Map.cs:21)
```
### 該当のソースコード
```C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Map : MonoBehaviour
{
   public int width;
   public int height;
   public Tile[,] tiles;
   public Material material;
   Mesh mesh;
   private MeshPosition meshPosition = new MeshPosition();
   // Use this for initialization
   void Start()
   {
       CreateTiles();
       GenerateMesh();
       foreach(Vector2 a in meshPosition.MeshPos)
       {
           Debug.Log(a);
       }
   }
   // Update is called once per frame
   void Update()
   {
       Graphics.DrawMesh(mesh, Vector3.zero, Quaternion.identity, material, 0);
   }
   void CreateTiles()
   {
       tiles = new Tile[width, height];
       for (int i = 0; i < width; i++)
       {
           for (int j = 0; j < height; j++)
           {
               tiles[i, j] = new Tile(Tile.Type.Dirt);
               Vector2 pos = new Vector2(width, height);
               meshPosition.MeshPos.Add(pos);
           }
       }
   }
   void GenerateMesh()
   {
       MeshData data = new MeshData(tiles);
       mesh = new Mesh();
       mesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32;
       mesh.vertices = data.vertices.ToArray();
       mesh.triangles = data.triangles.ToArray();
       mesh.uv = data.UVs.ToArray();
       mesh.RecalculateNormals();
       mesh.RecalculateBounds();
   }
}
```
```C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MeshPosition
{
   private List<Vector2> meshPos;
   public List<Vector2> MeshPos
   {
       get
       {
           return meshPos;
       }
   }
}
```
### 試したこと
何度かスクリプトを書き換えても、なぜエラーになっているのかいまいち分からなかったので質問しました。どうしてNullReferenceExceptionになるのか、教えてもらえるとありがたいです。よろしくお願いします。
Map.csでデバッグしようとしているのですが、エラーになってしまいます。MeshPositionのListを使おうとしているだけなのですが…。どうしてNullReferenceExceptionになるのか、教えてもらえるとありがたいです。よろしくお願いします。
  • C#

    12579 questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

  • Unity

    8534 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る