Hello please help me here? my errors;
NullReferenceException: Object reference not set to an instance of an object
CharacterGenerator.DisplayName () (at Assets/Scripts/CharacterClasses/CharacterGenerator.cs:65)
CharacterGenerator.OnGUI () (at Assets/Scripts/CharacterClasses/CharacterGenerator.cs:50)
NullReferenceException: Object reference not set to an instance of an object
CharacterGenerator.Start () (at Assets/Scripts/CharacterClasses/CharacterGenerator.cs:37)
my all script:
using UnityEngine;
using System.Collections;
using System; //Used the enum class
public class CharacterGenerator : MonoBehaviour {
private PlayerCharacter _toon;
private const int STARTING_POINTS = 350;
private const int MIN_STARTING_ATTRIBUTE_VALUE = 10;
private const int STARTING_VALUE = 50;
private int pointsleft;
private const int OFFSET = 5;
private const int LINE_HEIGHT = 20;
private const int STAT_LABEL_WIDTH = 100;
private const int BASEVALUE_LABEL_WIDTH = 30;
private const int BUTTON_WIDTH = 20;
private const int BUTTON_HEIGHT = 20;
private int statStartingPos = 40;
public GameObject playerPrefab;
// Use this for initialization
void Start () {
GameObject pc = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity) as GameObject;
pc.name = "pc";
_toon = pc.GetComponent<PlayerCharacter>();
pointsleft = STARTING_POINTS;
for(int cnt = 0; cnt < Enum.GetValues(typeof(AttributeName)).Length; cnt++){
_toon.GetPrimaryAttribute(cnt).BaseValue = STARTING_VALUE;
pointsleft -= (STARTING_VALUE - MIN_STARTING_ATTRIBUTE_VALUE);
}
_toon.StatUpdate();
}
// Update is called once per frame
void Update (){
}
void OnGUI(){
DisplayName();
DisplayPointLeft();
DisplayAttributes();
DisplayVitals();
DisplaySkills();
if(_toon.Name == "" || pointsleft > 0)
DisplayCreateLabel();
else
DisplayCreateButton();
}
private void DisplayName(){
GUI.Label(new Rect(10, 10, 50, 25), "Name:");
_toon.Name = GUI.TextField(new Rect(65, 10, 100, 25), _toon.Name);
}
private void DisplayAttributes(){
for(int cnt = 0; cnt < Enum.GetValues(typeof(AttributeName)).Length; cnt++){
GUI.Label(new Rect(OFFSET, //X
statStartingPos + (cnt * LINE_HEIGHT), //Y
STAT_LABEL_WIDTH, //Width
LINE_HEIGHT //Height
), ((AttributeName)cnt).ToString());
GUI.Label(new Rect(STAT_LABEL_WIDTH + OFFSET, //X
statStartingPos + (cnt * LINE_HEIGHT), //Y
BASEVALUE_LABEL_WIDTH, //Width
LINE_HEIGHT //Height
), _toon.GetPrimaryAttribute(cnt).AdjustedBaseValue.ToString());
if(GUI.Button(new Rect(OFFSET + STAT_LABEL_WIDTH + BASEVALUE_LABEL_WIDTH, //X
statStartingPos + (cnt * BUTTON_HEIGHT), //Y
BUTTON_WIDTH, //Width
BUTTON_HEIGHT
), "-")){
if(_toon.GetPrimaryAttribute(cnt).BaseValue > MIN_STARTING_ATTRIBUTE_VALUE){
_toon.GetPrimaryAttribute(cnt).BaseValue--;
pointsleft++;
_toon.StatUpdate();
}
}
if(GUI.Button(new Rect(OFFSET + STAT_LABEL_WIDTH + BASEVALUE_LABEL_WIDTH + BUTTON_WIDTH, //X
statStartingPos + (cnt * BUTTON_HEIGHT), //Y
BUTTON_WIDTH, //Width
BUTTON_HEIGHT //Height
), "+")){
if(pointsleft > 0){
_toon.GetPrimaryAttribute(cnt).BaseValue++;
pointsleft--;
_toon.StatUpdate();
}
}
}
}
private void DisplayVitals(){
for(int cnt = 0; cnt < Enum.GetValues(typeof(VitalName)).Length; cnt++){
GUI.Label(new Rect(OFFSET, //X
statStartingPos + ((cnt + 7) * LINE_HEIGHT), //Y
STAT_LABEL_WIDTH, //Width
LINE_HEIGHT
), ((VitalName)cnt).ToString());
GUI.Label(new Rect(OFFSET + STAT_LABEL_WIDTH, //X
statStartingPos + ((cnt + 7) * LINE_HEIGHT), //Y
BASEVALUE_LABEL_WIDTH, LINE_HEIGHT //Width
), _toon.GetVital(cnt).AdjustedBaseValue.ToString()); //Height
}
}
private void DisplaySkills(){
for(int cnt = 0; cnt < Enum.GetValues(typeof(SkillName)).Length; cnt++){
GUI.Label(new Rect(OFFSET + STAT_LABEL_WIDTH + BASEVALUE_LABEL_WIDTH + BUTTON_WIDTH * 2 + OFFSET * 2, //X
statStartingPos + (cnt * LINE_HEIGHT), //Y
STAT_LABEL_WIDTH, //Width
LINE_HEIGHT //Height
), ((SkillName)cnt).ToString());
GUI.Label(new Rect(OFFSET + STAT_LABEL_WIDTH + BASEVALUE_LABEL_WIDTH + BUTTON_WIDTH * 2 + OFFSET * 2 + STAT_LABEL_WIDTH, //X
statStartingPos + (cnt * LINE_HEIGHT), //Y
BASEVALUE_LABEL_WIDTH, //Width
LINE_HEIGHT //Height
), _toon.GetSkill(cnt).AdjustedBaseValue.ToString());
}
}
private void DisplayPointLeft(){
GUI.Label(new Rect(250, 10, 100, 25), "Points Left: " + pointsleft.ToString());
}
private void DisplayCreateLabel(){
GUI.Label(new Rect(Screen.width / 2 - 50, statStartingPos + (10 * LINE_HEIGHT), 100, LINE_HEIGHT), "Creating..." , "Button");
}
private void DisplayCreateButton(){
if( GUI.Button(new Rect(Screen.width / 2 - 50, statStartingPos + (10 * LINE_HEIGHT), 100, LINE_HEIGHT), "Create")){
GameSettings gsScript = GameObject.Find("__GameSettings").GetComponent<GameSettings>();
//Change the cur value of the vitals to the max modified value of that vitals
UpdateCurVitalValues();
//Save the Character data
gsScript.SaveCharacterData();
Application.LoadLevel("Scene 1");
}
}
private void UpdateCurVitalValues(){
for(int cnt = 0; cnt < Enum.GetValues(typeof(AttributeName)).Length; cnt++){
_toon.GetVital(cnt).CurValue = _toon.GetVital(cnt).AdjustBaseValue;
}
}
}