분류 전체보기

    Array 함수 #5. sort

    Array 함수 #5. sort

    1. sort let input = ['a','b','A','ddd','C','a7'];let output = input.sort(); // input = output = ['A','C','a','a7','b','ddd]sort 함수는 정렬한 후의 결과 배열을 리턴하며, 원본 배열도 같이 수정된다. 매개변수를 생략할 경우 ASCII 문자 표 기준 오름차순으로 정렬된다. let input = [8,3,5,0,11,6];let output = input.sort(); // input = output = [0,11,3,5,6,8]위의 배열을 정렬하면 예상과 다르게 11이 3 보다 앞서있다. 그 이유는 내부적으로 배열의 원소들을 string으로 형변환하고, 이후에 첫 번째 문자를 기준으로 정렬..

    Array 함수 #4. reduce vs.forEach

    1. reduce reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T): T;reduce(callbackfn: (previousValue: T, currentValue: T, currentIndex: number, array: T[]) => T, initialValue: T): T;reduce(callbackfn: (previousValue: U, currentValue: T, currentIndex: number, array: T[]) => U, initialValue: U): U;reduce 함수는 배열을 순회하면서 콜백 함수를 반복 실행하고, 모든 반복의 결과를 하나의 값으로 줄이는(..

    Array 함수 #3. 배열에 원소 추가,삭제

    Array 함수 #3. 배열에 원소 추가,삭제

    1. slice 특정 배열을 start 인덱스부터 end 인덱스까지 잘라서 새로운 배열에 넣어 리턴하는 함수다. 함수의 반환 값은 잘라낸 원소들로 이뤄진 새 배열이다. 함수 자체는 두 개의 파라미터를 받는 간단한 형태인데 두 파라미터를 어떻게 넣는지에 따라 아주 다양하게 결과가 나오기 때문에 주의가 필요하다. start와 end 주의점배열의 인덱스를 벗어나는 수를 입력해도 에러가 발생하지는 않음양수인 경우, 배열의 앞에서부터 인덱스를 의미함음수인 경우, 배열의 뒤에서부터 세는 인덱스를 의미함양수이면서 그 절대값이 배열의 길이 이상인 경우, 배열의 길이와 같은 인덱스를 의미함음수이면서 그 절대값이 배열의 길이 이상인 경우, 0을 의미함start가 undefined인 경우, 0을 의미함end를 지정하지 않을..

    Array 함수 #2. 조건 확인

    1. filter let input = [0,1,2,3,4];let output = input.filter(x => { if (x % 2 == 0) return true;})console.log(output); // [0,2,4]filter 함수는 map과 비슷하다. 둘의 공통점은, 배열을 순회하면서 새로운 배열을 만들어 리턴한다. filter 함수는 콜백 함수가 true를 리턴했을 때만 그 때의 원소를 새 배열에 추가한다.  map과 filter의 차이는 크게 두 가지가 있다. (1) map은 리턴하는 배열에 콜백 함수가 적용된 새 원소를 추가하고, filter는 기존 배열의 원소를 그대로 복사해 추가한다. let input = [0,1,2,3,4];let outputMap = input.m..

    Array 함수 #1. 반복문

    Array 함수 #1. 반복문

    1. forEach와 map let input = [0,1,2,3,4];input.forEach(() => { console.log("forEach. 5번 출력됨.") });input.map(() => { console.log("map. 5번 출력됨.") });forEach와 map은 매개변수로 콜백 함수 하나를 받는다. 그리고 배열을 순회하면서 배열의 원소들을 탐색할 때마다 (원소를 마주할 때마다) 해당 함수를 실행한다.  let input = ['a','b','c','d'];input.forEach((x, y, z) => { console.log("value : " + x); console.log("index : " + y); console.log("array : " + z);});i..

    비동기 함수 실행 방법들

    유니티에서 Update를 쓰지 않고 코루틴만을 사용해 비동기식 프로그래밍을 주로 하다보니 코코스 크리에이터에서도 그러한 스타일을 유지하고 싶었다. 그리고 현재까지는 세 가지의 방법을 사용해봤다. 개념 설명까지 하기에는 많이 복잡해서 더 공부해야되서 사용법만 간단하게 정리해본다. 아래 방법들은 주로 어떤 노드의 상태 변화나 연출 등에 사용해봤고 큰 문제를 겪진 않았다. 파일 입출력이나 서버로부터 패킷 대기와 같은 상황들에서는 좀 더 까다롭게 접근할 필요가 있다. 1. async, await async Test(){ await this.Sleep(2000); console.log("2초 지났음"); } Sleep(ms : number){ return new Promise(resolve => setTimeou..

    구글 스프레드 시트 연동

    구글 스프레드 시트 연동

    1. 관련 패키지 설치 https://assetstore.unity.com/packages/tools/utilities/google-sheets-to-unity-73410 에셋스토어에서 Google Sheets To Unity 패키지를 다운받아 임포트한다. 구글 스프레드 시트와 유니티를 연동하는 플러그인은 링크해놓은 패키지(무료)가 있고 itch.io에서 구매할 수 있는 Unity Google Sheets (UGS. 유료 $17.59)가 있다. 일단 무료 패키지를 써보다가 불편한 점이나 한계점을 느끼게되면 갈아탈 생각이다. "Multiple precompiled assemblies with the same name Newtonsoft.Json.dll included on the current platfo..

    GitHub에 원격 저장소 생성 및 프로젝트 업로드

    GitHub에 원격 저장소 생성 및 프로젝트 업로드

    1. SVN vs Git 여태 가장 많이 써본 형상관리툴은 SVN이었다. 회사에서도 SVN을 사용하고 있다. SVN의 경우 특정 서버컴퓨터에 직접 SVN 서버를 구축해야하는데 그럴만한 서버 컴퓨터를 따로 갖고있지도 않고 클라우드를 이용한다해도 요금을 결제해야한다. 규모가 크지 않은 개인프로젝트인 만큼 GitHub의 저장소를 이용하기로 했다. 2. GitHub 저장소 생성 https://github.com/ GitHub 로그인 후 메인페이지의 좌측 상단에 [New] 버튼을 통해 새 저장소를 만들 수 있다. 3. Git 설치 https://git-scm.com/download/win 위 링크에서 깃을 다운받아 설치한다. 인스톨 과정에서 여러가지 기본값 설정을 할 수 있는데 나는 모두 디폴트 값으로 설정했다...