- Home /
Object reference woe?
Hi everyone,
Every time I try to run my game, I get this error: " Object reference not set to an instance of an object". Unity says that the error is being caused by this piece of code (at the bottom), but I can't see what's going wrong. There is only one game object referred to in the code, and I did declare it and set it to something.
Thank in advance for your brilliant suggestions and fixed code that I'm sure you're going to send me! The Code:
var dayBrightness : float;
var nightBrightness : float;
var dayColour : Color;
var nightColour : Color;
var sun : GameObject;
private var nightDayRatio : float;
sun = new GameObject ("sun");
sun.GameObject.AddComponent ("light");
sun.light.type = LightType.Directional;
function Update () {
//________________________________________________________
if (Time.minutes >= 0 && Time.minutes < 2) {
//night to day process
sun.light.intensity = ((Time.seconds + (Time.minutes * 60)) * ((dayBrightness-nightBrightness)/120) ) + nightBrightness;
Time.state = "Night to Day";
nightDayRatio = (Time.seconds+(Time.minutes*60.0))/120.0;
RenderSettings.fogColor = Color.Lerp(nightColour, dayColour, nightDayRatio);
}
//___________________________________
if (Time.minutes >= 2 && Time.minutes < 10) {
//day state
Time.state = "Day";
sun.light.intensity = dayBrightness;
RenderSettings.fogColor = dayColour;
}
//___________________________________
if (Time.minutes >= 10 && Time.minutes < 12) {
//day to night process
sun.light.intensity = ((Time.seconds + (Time.minutes * 60)) * ((nightBrightness-dayBrightness)/120) ) + dayBrightness;
nightDayRatio = (Time.seconds+(Time.minutes*60.0))/120.0;
RenderSettings.fogColor = Color.Lerp(dayColour, nightColour, nightDayRatio);
Time.state = "Day to Night";
}
//___________________________________
if (Time.minutes >= 12 && Time.minutes < 20) {
//night state
Time.state = "Night";
sun.light.intensity = nightBrightness;
RenderSettings.fogColor = nightColour;
}
}
Are you missing a Start function ?
function Start()
{
sun = new GameObject ("sun");
sun.GameObject.AddComponent ("light");
sun.light.type = LightType.Directional;
}
As AJ says - don't write code outside of functions in Unity Script (it isn't real Javascript).
Using the whole-post-in-caps incantation can get you expelled from Hogwarts - and I would know!
Answer by CodeMasterMike · Jan 02, 2013 at 06:55 AM
Make sure that the object "sun" do really exist.
function Update ()
{
if(sun != null)
{
//________________________________________________________
if (Time.minutes >= 0 && Time.minutes < 2) {
//night to day process
sun.light.intensity = ((Time.seconds + (Time.minutes * 60)) * ((dayBrightness-nightBrightness)/120) ) + nightBrightness;
Time.state = "Night to Day";
nightDayRatio = (Time.seconds+(Time.minutes*60.0))/120.0;
RenderSettings.fogColor = Color.Lerp(nightColour, dayColour, nightDayRatio);
}
//___________________________________
if (Time.minutes >= 2 && Time.minutes < 10) {
//day state
Time.state = "Day";
sun.light.intensity = dayBrightness;
RenderSettings.fogColor = dayColour;
}
//___________________________________
if (Time.minutes >= 10 && Time.minutes < 12) {
//day to night process
sun.light.intensity = ((Time.seconds + (Time.minutes * 60)) * ((nightBrightness-dayBrightness)/120) ) + dayBrightness;
nightDayRatio = (Time.seconds+(Time.minutes*60.0))/120.0;
RenderSettings.fogColor = Color.Lerp(dayColour, nightColour, nightDayRatio);
Time.state = "Day to Night";
}
//___________________________________
if (Time.minutes >= 12 && Time.minutes < 20) {
//night state
Time.state = "Night";
sun.light.intensity = nightBrightness;
RenderSettings.fogColor = nightColour;
}
}
}
Good luck!
Your answer
Follow this Question
Related Questions
error CS1520: Class, struct, or interface method must have a return type 2 Answers
Problems with my grenade PLEASE HELP! 1 Answer
Unable To Find Solution For Errors 1 Answer
Making it display a Gui 2 Answers
Limit rotation for a statue puzzle 1 Answer