I apologize for having so little information and such a large script, but there is no error on a specified line that unity gives me. It just crashes.
I made a script. Of course it didn’t work on the first try, so While going through fixing the problems, I have encountered 2 places where if the line is run, unity crashes. One is just an instantiation of an object, but I can’t work around the other one.
The instantiation is on line 306, and the real problem happens on line 60, and/or 64 whenever “initialisations < xcue.Length” is include in the if statement. I can put the statement separately or before, but the result is the same.
Any idea whatsoever would be fantastic.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class floorbuilderv2 : MonoBehaviour {
//room related
public GameObject[] fourrooms = new GameObject[3];
public GameObject[] threerooms = new GameObject[3];
public GameObject[] tworooms = new GameObject[3];
public GameObject[] onerooms = new GameObject[3];
public GameObject[] startrooms = new GameObject[1];
//settings
public GameObject TestRepresent;
public float distance = 10f;
//flooor related
int currentfloor = 0;
public int Size_Increase_Factor = 5;
List<placeholder[,]> existanceplaceholders = new List<placeholder[,]>();
int roomcount = 0;
int initialisations = 0;
//placeholder[][] existance = new placeholder[10][10];
//misc
void Start () {
transform.position = new Vector3 (0, 0, 0);
buildnextfloor ();
}
void buildnextfloor(){
int gridsize = (currentfloor+1) * 20;
int starttile = Mathf.FloorToInt (gridsize/2);
int roomquantity = ((currentfloor+1) + (currentfloor+1)) * Size_Increase_Factor;
int priorityfactor = 1;
roomcount = 0;
initialisations = 0;
existanceplaceholders.Add(new placeholder[gridsize,gridsize]);
for (int i=0; i < (gridsize); i++) {
for(int j =0; j < gridsize; j++){
existanceplaceholders[currentfloor][i, j] = new placeholder();
}
}
////////////////////////////////////////////////////////////////////////////////
creattile (starttile, starttile, 4, priorityfactor, gridsize);
priorityfactor ++;
while(true){
int[] xcue = findnextcue(gridsize, true);
int[] ycue = findnextcue(gridsize, false);
for(int i =0; i < initialisations; i++){
if(initialisations < xcue.Length){
break;
}
if(roomcount < roomquantity && initialisations < xcue.Length){
Debug.Log("Creating new tile (" + xcue _+ ", " + ycue *+ ")");*_
creattile(xcue_, ycue*, 0, priorityfactor, gridsize);
}
else{
break;
}
}
if(roomcount >= roomquantity || initialisations < xcue.Length){
break;
}
}
buildnextfloorfaze2(gridsize);
}*_
* void creattile(int x, int y, int staticdoorcount, int priority, int gridsize){*
* existanceplaceholders[currentfloor][x, y].exists = true;*
* existanceplaceholders[currentfloor][x, y].initialised = true;*
* existanceplaceholders [currentfloor] [x, y].location = generatecoordinates (x, y, gridsize);*
* Debug.Log("initialised room. Grid location: " + existanceplaceholders [currentfloor] [x, y].location);*
* roomcount ++;*
* existanceplaceholders [currentfloor] [x, y].priority = priority;*
* int adjacents = 0;*
* if (staticdoorcount > 0){*
* if(staticdoorcount == 4){*
* existanceplaceholders[currentfloor][x+1, y].exists = true;*
* existanceplaceholders[currentfloor][x, y+1].exists = true;*
* existanceplaceholders[currentfloor][x-1 ,y].exists = true;*
* existanceplaceholders[currentfloor][x, y-1].exists = true;*
* initialisations += 4;*
* }*
* }*
* else if ((int)Random.Range(1, 3) == 1){*
* adjacents = 1;*
* }*
* else if((int)Random.Range(1, 3) != 1){*
* adjacents = 2;*
* }*
* else{*
* adjacents = 3;*
* }*
* int offsetx = 0;*
* int offsety = 0;*
* if(adjacents == 1){*
* int attempts = 0;*
* offsetx = setoffsetx();*
* offsety = setoffsety(offsetx);*
* while(existanceplaceholders[currentfloor][x +offsetx, y+offsety].exists == true){*
* offsetx = 0;*
* offsety = 0;*
* offsetx = setoffsetx();*
* offsety = setoffsety(offsetx);*
* attempts ++;*
* if(attempts > 3){*
* break;*
* }*
* }*
* if(attempts < 3){*
* existanceplaceholders[currentfloor][x +offsetx, y + offsety].exists = true;*
* initialisations ++;*
* }*
* }*
* else if(adjacents == 2){*
* for(int i=0; i<2; i++){*
* int attempts = 0;*
* offsetx = setoffsetx();*
* offsety = setoffsety(offsetx);*
* while(existanceplaceholders[currentfloor][x +offsetx, y+offsety].exists == true){*
* offsetx = 0;*
* offsety = 0;*
* offsetx = setoffsetx();*
* offsety = setoffsety(offsetx);*
* attempts ++;*
* if(attempts > 3){*
* break;*
* }*
* }*
* if(attempts < 3){*
* existanceplaceholders[currentfloor][x +offsetx, y + offsety].exists = true;*
* initialisations ++;*
* }*
* }*
* }*
* else if(adjacents == 3){*
* for(int i=0; i<3; i++){*
* int attempts = 0;*
* offsetx = setoffsetx();*
* offsety = setoffsety(offsetx);*
* while(existanceplaceholders[currentfloor][x +offsetx, y+offsety].exists == true){*
* offsetx = 0;*
* offsety = 0;*
* offsetx = setoffsetx();*
* offsety = setoffsety(offsetx);*
* attempts ++;*
* if(attempts > 3){*
* break;*
* }*
* }*
* if(attempts < 3){*
* existanceplaceholders[currentfloor][x +offsetx, y + offsety].exists = true;*
* initialisations ++;*
* }*
* }*
* }*
* }*
* int setoffsetx(){*
* if(Random.Range(1,2) == 1){*
* int rnd = Random.Range (1, 2);*
* if(rnd == 1){*
* return -1;*
* }*
* if (rnd == 2) {*
* return 1;*
* }*
* }*
* else{*
* return 0;*
* }*
* return 0;*
* }*
* int setoffsety(int offsetx){*
* if(offsetx == 0){*
* int rnd = Random.Range (1, 2);*
* if(rnd == 1){*
* return -1;*
* }*
* if (rnd == 2) {*
* return 1;*
* }*
* }*
* else{*
* return 0;*
* }*
* return 1;*
* }*
* //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*
* Vector3 generatecoordinates(int x, int y, int gridsize){*
* int starttile = Mathf.FloorToInt (gridsize/2);*
_ return new Vector3 (((starttile - x)distance),(0f),((starttile-y)distance));
}_
* //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*
* int[] findnextcue(int gridsize, bool findx){*
* int[] cue = new int[initialisations];*
* int tempi = 0;*
* if(findx){*
* for(int i = 0; i < gridsize; i++){*
* for(int ii = 0; ii < gridsize; ii++){*
* if(existanceplaceholders[currentfloor][i,ii].exists == true && existanceplaceholders[currentfloor][i,ii].initialised == false){*
* cue[tempi] = i;*
* tempi ++;*
* }*
* }*
* }*
* return cue;*
* }*
* else{*
* for(int i = 0; i < gridsize; i++){*
* for(int ii = 0; ii < gridsize; ii++){*
* if(existanceplaceholders[currentfloor][i,ii].exists == true && existanceplaceholders[currentfloor][i,ii].initialised == false){*
* cue[tempi] = ii;*
* tempi ++;*
* }*
* }*
* }*
* return cue;*
* }*
* return null;*
* }*
* ////////////////////////////////////////////////////////////////////////////////////*
* int[] initialisedcue(int gridsize, bool findx){*
* int[] cue = new int[initialisations];*
* int tempi = 0;*
* if(findx){*
* for(int i = 0; i < gridsize; i++){*
* for(int ii = 0; ii < gridsize; ii++){*
* if(existanceplaceholders[currentfloor][i,ii].initialised == true){*
* cue[tempi] = i;*
* tempi ++;*
* }*
* }*
* }*
* return cue;*
* }*
* else{*
* for(int i = 0; i < gridsize; i++){*
* for(int ii = 0; ii < gridsize; ii++){*
* if(existanceplaceholders[currentfloor][i,ii].initialised == true){*
* cue[tempi] = ii;*
* tempi ++;*
* }*
* }*
* }*
* return cue;*
* }*
* return null;*
* }*
* //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////*
* void buildnextfloorfaze2(int gridsize){*
* int[] xcue = initialisedcue(gridsize, true);*
* int[] ycue = initialisedcue(gridsize, false);*
* for(int i = 0; i < xcue.Length; i++) {*
//Instantiate(TestRepresent, existanceplaceholders[currentfloor][xcue_, ycue*].location, Quaternion.identity);
}
Debug.Log(“Finished instantiation”);*_
* }*
* //void Update () {*
* //}*
}