| mihalacher26 a întrebat:

Buna ziua toata lumea, m-am apucat recent de un proiect, un joculet RPG si tocmai ce terminam cu sistemul de creare a caracterului in C#, si am dat de o eroare : Index array out of range, uitati scriptul :

using UnityEngine;
using System.Collections;

public class DisplayCreatePlayerFunctions {

private StatAllocationModule statAllocationModule = new StatAllocationModule();

private int classSelection;
private string[] classSelectionNames = new string[] {"Mage", "Warrior", "Rogue", "Archer", "Warlock", "Paladin"};

public void DisplayClassSelections(){
//A list of toggle buttons and each button will be a different class
//selection grid
classSelection = GUI.SelectionGrid (new Rect (50, 50,250,300), classSelection, classSelectionNames, 2);
GUI.Label (new Rect (450, 50, 300, 300), FindClassDescription (classSelection));
GUI.Label (new Rect (450, 100, 300, 300), FindClassStatValues (classSelection));

}

private string FindClassDescription(int classSelection){
if(classSelection == 0){
BaseCharacterClass tempClass = new BaseMageClass();
return tempClass.CharacterClassDescription;
}else if(classSelection == 1){
BaseCharacterClass tempClass = new BaseWarriorClass();
return tempClass.CharacterClassDescription;
}else if(classSelection == 2){
BaseCharacterClass tempClass = new BaseAssassinClass();
return tempClass.CharacterClassDescription;
}
return "NO CLASS FOUND";
}



private string FindClassStatValues(int classSelection){
if (classSelection == 0) {
BaseCharacterClass tempClass = new BaseMageClass ();
string tempStats = "Stamina " + tempClass.Stamina + "\n" + "Strength " + tempClass. Endurance;
return tempStats;

} else if (classSelection == 1) {
BaseCharacterClass tempClass = new BaseWarriorClass ();
string tempStats = "Stamina " + tempClass.Stamina + "\n" + "Intellect " + tempClass.Intellect;
return tempStats;
} else if (classSelection == 2) {
BaseCharacterClass tempClass = new BaseAssassinClass ();
string tempStats = "Stamina " + tempClass.Stamina + "\n" + "Agility " + tempClass.Agility + "\n" + "Endurance " + tempClass.Endurance;
return tempStats;
}

return "NO STATS FOUND";
}

public void DisplayStatAllocation(){
//a list of stats with plus and minus buttons to add stats
//logic to make sure the player cannot add more than stats given
statAllocationModule. DisplayStatAllocationModule ();

}

public void DisplayFinalSetup(){
//name
//gender
//add a description to your character, a short bio
}

private void ChooseClass(int classSelection){
if (classSelection == 0) {
GameInformation.PlayerClass = new BaseMageClass ();
} else if (classSelection == 1) {
GameInformation.PlayerClass = new BaseWarriorClass ();
} else if (classSelection == 2) {
GameInformation.PlayerClass = new BaseAssassinClass ();
}
}

public void DisplayMainItems(){
Transform player = GameObject.FindGameObjectWithTag("Player").transform;
GUI.Label (new Rect (Screen. width/2, 20, 250, 250), "Create new Player");

if (GUI. Button (new Rect (545, 370, 50, 50), "")){
//turn transform tagged as player to the right
player.Rotate(Vector3.down * 10);
}
if(GUI. Button(new Rect(630, 420, 100, 50), "Next")){
CreateAPlayerGUI.currentState = CreateAPlayerGUI.CreateAPlayerStates.STATALLOCATION;
}
}
}


dau funda celui care vine cu raspunsul corect,
de asemenea am setat sa imi apara 2 butoane + si - la fiecare status, problema e ca nu apar si de asemenea apare acea eroare despre care am explicat mai sus, va rog am mare nevoie de un raspuns bun, dau funda!

7 răspunsuri:
suntserios
| suntserios a răspuns:

Tu chiar vrei sa faci un joc si nu esti in stare sa intelegi o eroare de baza in folosirea unui array?

| mihalacher26 explică (pentru suntserios):

Omule, daca crezi ca nu sunt in stare sa fac un joc, iti pot arata toate scripturile pe care le-am facut si le-am rezolvat problemele, insa astuia chiar nu-i dau de cap si mai am nevoie doar de asta si de scriptul de lupta turn-based si imi voi termina partea de programare, asa ca ori vi cu o solutie ori stai sa spui pretexte sarcastice straight face

| suntserios a răspuns (pentru mihalacher26):

Inca o dovada ca trebuie sa inveti programare si pe urma sa te apuci de jocuri? Ai impresia ca o sa stea cineva ca ghiceasca unde iti da tie eroarea in tot carnatul ala de cod, care oricum e incomplet, pe care l ai trantit tu acolo?

| mihalacher26 explică (pentru suntserios):

E incomplet deoarece n-am implementat si celalalte scripturi cu ajutorul caruia va fi complet si nu l-am completat pentru ca mi-a dat eroare si am spus decat sa continui si s-ar putea sa-mi dea alte erori si sa devin confuz, as stopa pana gasesc eroarea, problema e ca n-am gasit eroarea si ma astept ca cineva mai competent ca mine, sau cu un ochi mai ager sa gaseasca eroarea pentru a o putea repara

| mihalacher26 explică (pentru mihalacher26):

Ahh, am copiat scriptul gresit, se pare ca nu deaici vine problema laughing

| suntserios a răspuns (pentru mihalacher26):

Ai compilator, compilatorul iti spune si unde e eroarea, inca odata, nu putem noi ghici ce si unde... da informatia completa despre eroare si poate poate

| mihalacher26 explică (pentru suntserios):

Ramasesem cu impresia ca de aici vine problema insa am vazut ca compilerul arata ca aici e problema deoarece am gresit mai multe linii din alt script de care se foloseste scriptul asta asa ca scriptul asta a devenit nul iar compilerul l-a gasit drept problema, sper sa rezolv problema, oricum multumesc pentru raspunsuri. happy