상세 컨텐츠

본문 제목

유니티 배열 Array 노트

Unity/C# note

by 오발탄LAB 2021. 5. 22. 17:27

본문

반응형

[오발탄 : System.Linq]

 

 배열 사이즈 정하고 내용 추가하기 

public int[] num1 = { 0, 1, 2, 3 };
public int[] num2;

void Start()
{
	num2 = new int[num1.Length];  // num2 = new int[4]와 동일 
    // 사이즈가  정해지는 것이고 내용은 기본인 0으로 동일.
   
    // 내용 추가:
    num2[0] = 4;
    num2[1] = 5;
}
public GameObject[] objects;

void Start()
{
	objects = new GameObject[5];
    objects[0] = Camera.main.gameObject;
    objects[3] = GameObject.Find("Cube");
}

+ inspector에서 사이즈 조절해도 무관

 

 Child 추가하기 

    public Rigidbody [] cubes;

    void Start()
    {
        cubes = GetComponentsInChildren<Rigidbody>();
        foreach(Rigidbody cube in cubes)
        { 
            cube.useGravity = false;
        }
    }

 

 

 Array.Reverse 

using System;

public class Solution {
    public string solution(string my_string, int s, int e) {
        string answer = "";
        char[] c = my_string.ToCharArray();
        Array.Reverse(c, s, e-s+1);
        answer = new string(c);
        return answer;
    }
}

s부터 index e까지 뒤집은 문자열 반환하기. e-s+1은 s 로부터 count이기 때문.

Array.Reverse(array, startIndex, count);

 

 

 Array.FindIndex() 

using System;

public class Solution {
    public int solution(int[] num_list) {
        return Array.FindIndex(num_list, f => f < 0);
    }
}

num_list가 음수의 원소를 가질 때 index를 반환한다. 첫 index를 반환한다.

Array.IndexOf 와는 다르게 델리게이트를 사용하여 조건을 지정할 수 있다.

 Array.IndexOf()   & Array.LastIndexOf() 

using System;

public class Solution {
    public int[] solution(int[] arr) 
    {
        int start = Array.IndexOf(arr, 2);
        if(start == -1) return new int[1]{ -1 };

        int end = Array.LastIndexOf(arr, 2);

        int[] answer = new int[end - start + 1];
        Array.Copy(arr, start, answer, 0, answer.Length);
        return answer;
    }
}

Array.IndexOf() 에서는 arr 에서 2값을 가진 원소의 첫 index를 반환

Array.LastIndexOf()에서는 arr 에서 2값을 가진 원소의 마지막 index를 반환한다.

성능을 많이 필요로 하기 때문에 상황에 따라서 Dictionary 사용. string을 찾아야 할때.

 

 Array.Copy(); 

특정 범위를 array에서부터 다른 array로 복사하기.

Array.Copy(array, startIndex, newArray, 0, length);

newArray[0] 행렬부터 length 길이만큼 array[startIndex] 로부터 복사해 온다.

int[] arr = { 1, 2, 3, 4, 5, 6, 7 }; // 주어진 배열
int startIndex = 2; // 추출을 시작할 시작 인덱스
int length = 3; // 추출할 길이

int[] extractedArray = new int[length]; // 추출된 배열을 저장할 배열 생성
Array.Copy(arr, startIndex, extractedArray, 0, length); // 배열 슬라이싱

System.Linq의 Skip 참고 

반응형

관련글 더보기

댓글 영역