Whenever you call
arr = new Int[10]
It clears everything inside the array. For example, if I wanted to resize it later on, how would I avoid this?
Whenever you call
arr = new Int[10]
It clears everything inside the array. For example, if I wanted to resize it later on, how would I avoid this?
You could try cloning the array to a new array of a different size.
Don’t use an array
Javascript has Array which is resizeable. But your best bet is to import System.Collections.Generic and use a List;
I can’t tell if that code is Javascript or c#
Javascript
var arr : List.<int> = new List.<int>(10);
arr[0] = 1;
arr[1] = 2;
arr.Insert(1,1000); // Array now contains 11 items - 1,1000,2 are the first 3
So it has the same semantics as an array, but it is resizable, sortable etc.
Lists are pretty fast, but here’s a trick if you won’t resize often, but you will use it often:
import System.Linq;
var arr : int[] = new int[100];
Do something that access the array a lot, then decide to resize it:
var work = arr.ToList();
//add stuff to work
work.Insert(20,2000); //example
arr = work.ToArray();
If you insist on using the built-in arrays, you can create a new array and copy the other array into it in a for loop.
public int[] array = new int[10];
void Start() {
array = ResizeIntArray(array, 2);
}
public int[] ResizeIntArray(int[] array, int length) {
int[] newArray = new int[length];
if (length > array.Length) {
for (int i = 0; i < array.Length; i++) {
newArray _= array*;*_
}
} else if (length < array.Length) {
for (int i = 0; i < length; i++) {
newArray = array*;*
}
}
return newArray;
}
public bool myArray;
void OnValidate()
{
var tempArray = new bool[Random.Range(1, 10)];
for (int i = 0; i < myArray.Length && i < tempArray.Length; i++)
{
tempArray = myArray*;*
}
myArray = tempArray;
}