This script used to work, but something happened as I went through the tutorial. At first, the buttons were too close together and overlapping and you couldn’t see the skill points remaining. Now I’m not even getting any values. The more I look at it, the more cross-eyed I become. I need some new eyes on this. Thanks!
using UnityEngine;
using System.Collections;
using System;
public class CharacterGenerator : MonoBehaviour {
private PlayerCharacter _toon;
private const int STARTING_POINTS=350;
private const int MINSTARTING_ATTRIBUTE_VALUE= 10;
private int PointsLeft;
private const int OFFSET=5;
private const int LINE_HEIGHT=20;
private const int STARTING_VALUE=50;
private const int STAT_LABEL_WIDTH= 100;
private const int BASEVALUE_LABEL_WIDTH= 30;
private const int BUTTON_WIDTH=25;
private const int BUTTON_HEIGHT=25;
private int statStartingPos=40;
// Use this for initialization
void Start () {
PointsLeft=STARTING_POINTS;
_toon = new PlayerCharacter();
_toon.Awake();
for(int cnt=0; cnt < Enum.GetValues(typeof(AttributeName)).Length; cnt++) {
_toon.GetPrimaryAttribute(cnt).BaseValue= STARTING_VALUE;
PointsLeft-=(STARTING_VALUE - MINSTARTING_ATTRIBUTE_VALUE);
}
_toon.StatUpdate();
}
// Update is called once per frame
void Update () {
}
void OnGUI() {
DisplayName();
DisplayPointsLeft();
DisplayAttributes();
DisplayVitals();
DisplaySkills();
}
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 pos
statStartingPos + (cnt *LINE_HEIGHT), //y pos
STAT_LABEL_WIDTH, //item width
LINE_HEIGHT), //item height
((AttributeName)cnt).ToString() );
GUI.Label(new Rect(STAT_LABEL_WIDTH +OFFSET, //x pos
statStartingPos + (cnt *LINE_HEIGHT), //y pos
BASEVALUE_LABEL_WIDTH, //item width
LINE_HEIGHT), //item height
_toon.GetPrimaryAttribute(cnt).AdjustedBaseValue.ToString() );
if(GUI.Button(new Rect(OFFSET+STAT_LABEL_WIDTH+BASEVALUE_LABEL_WIDTH, //x pos
statStartingPos + (cnt *BUTTON_HEIGHT), //y pos
BUTTON_WIDTH , //button width
BUTTON_HEIGHT), //button height
" - " )){
if(_toon.GetPrimaryAttribute(cnt).BaseValue > MINSTARTING_ATTRIBUTE_VALUE){
_toon.GetPrimaryAttribute(cnt).BaseValue--;
PointsLeft++;
_toon.StatUpdate();
}
}
if(GUI.Button(new Rect(OFFSET+STAT_LABEL_WIDTH+BASEVALUE_LABEL_WIDTH+BUTTON_WIDTH, //x pos
statStartingPos + (cnt *BUTTON_HEIGHT), //y pos
BUTTON_WIDTH , //button width
BUTTON_HEIGHT), //button 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 pos
statStartingPos + ((cnt +7)*LINE_HEIGHT), //y pos
STAT_LABEL_WIDTH, //item width
LINE_HEIGHT), // item height
((VitalName)cnt).ToString() );
GUI.Label(new Rect(OFFSET+STAT_LABEL_WIDTH, //x pos
statStartingPos + ((cnt +7)*LINE_HEIGHT), //y pos
BASEVALUE_LABEL_WIDTH, //item width
LINE_HEIGHT), //item height
_toon.GetVital(cnt).AdjustedBaseValue.ToString() );
}
}
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 pos
statStartingPos + (cnt*LINE_HEIGHT), //y pos
100, //item width
LINE_HEIGHT), //item height
((SkillName)cnt).ToString() );
GUI.Label(new Rect(OFFSET+STAT_LABEL_WIDTH+BASEVALUE_LABEL_WIDTH+BUTTON_WIDTH*2+OFFSET *2+STAT_LABEL_WIDTH,
statStartingPos + (cnt*LINE_HEIGHT), //y pos
BASEVALUE_LABEL_WIDTH, //item width
LINE_HEIGHT), //item height
_toon.GetSkill(cnt).AdjustedBaseValue.ToString() );
}
}
private void DisplayPointsLeft() {
GUI.Label(new Rect(250, 10, 100, 25), "Skill Points Left:" +PointsLeft.ToString());
}
}