Question by
echl · Jan 10, 2017 at 02:54 AM ·
monodevelopexceptiondebuggingnull reference exceptiondebugger
Null Reference Exception only when using debugger
My code is throwing a NullReferenceException but only when attempting to use the MonoDeveloper debugger. I have no idea why. (Also sometimes it doesn't throw an exception...it seems totally random).
Here is the code. Exception is thrown for line 20.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class LineDrawer : MonoBehaviour {
public Material lineMat;
private List<Vector3> points, vPoints;
Body[] lineDrawerSubjects;
// Material lineMat2 = new Material ("Shader \"Lines/Colored Blended\" {" +
// "Subshader { Pass { " +
// "Blend SrcAlpha OneMinusSrcAlpha " +
// "ZWrite Off Cull Off Fog {Mode Off} " +
// "Bind Channels { " +
// "Bind \"vertex\", vertex Bind \"color\", color}" +
// "} } }");
public void DrawConnectingLines(){
foreach (Body lineDrawerSubject in lineDrawerSubjects) {
points = lineDrawerSubject.orbitPositions;
vPoints = lineDrawerSubject.orbitVelocities;
if (points.Count > 1) {
float len = points.Count;
//lineMat.SetColor ("Color", Color.red);
lineMat.SetPass (0);
Color startColor;
if (lineDrawerSubject is Ship) {
startColor = new Color (0, 1, 1, 1);
} else if (lineDrawerSubject is Bullet) {
startColor = new Color (1, 1, 1, 1);
} else {
startColor = new Color (1, 1, 1, 1);
}
Color endColor = new Color (0, 0, 0, 0);
GL.Begin (GL.LINES);
for (int i = 0; i < points.Count - 1; i++) {
GL.Color(Color.Lerp (startColor, endColor, i/len));
GL.Vertex3 (points [i].x, points [i].y, points [i].z);
GL.Vertex3 (points [i + 1].x, points [i + 1].y, points [i + 1].z);
}
GL.End ();
GL.Begin (GL.LINES);
GL.Color (Color.yellow);
GL.Vertex3 (points [0].x, points [0].y, points [0].z);
GL.Vertex3 (vPoints [0].x + points[0].x,vPoints [0].y + points[0].y, vPoints [0].z + points[0].z);
GL.End ();
}
}
}
void OnDrawGizmos() {
DrawConnectingLines();
}
void OnPostRender() {
DrawConnectingLines();
}
void UpdateSubjects(){
lineDrawerSubjects = FindObjectsOfType (typeof(Body)) as Body[];
}
void Start(){
points = new List<Vector3>();
UpdateSubjects ();
//lineDrawerSubjects = FindObjectsOfType (typeof(Body)) as Body[];
}
}
Comment