정리 안 하고 확인용 공부용으로 막 적음. 최적화를 해야하는데 프로파일링 사용이 너무 미숙한 것 같아서 다시 정리해보려고 한다. 프로파일링은? 병목을 체크하는 게 바로 프로파일링이다. 어디가 문제있는지를 확인을 하자! 어렴풋하게 하지말고 근거 있게 해야하는 거 개발 막바지에 해야하는 게 아니라 주기적으로 해야하는 것. 그렇지 않으면 돌이키기 힘든 경우가 생길 수도 있다. (나중에 가서야 갈아엎어야 할 수도 ㅠㅠ) - 추측에 의한 최적화 금지 - 디버거 / 프로파일러 툴의 적극적인 활용. - 에디터에서의 프로파일링은 단순 참고용! - 자동화된 테스팅 환경 구축하는 게 최선이다. 쓰로틀링 상황 고려해야함. 특히 최신기기일수록 그렇다. 유니티 프로파일러 하이라키 타임라인 웨이트 쓰레드는 신경쓰지말자! 프레임 ..
public Vector3 GetArcPoint(Vector3 startPos, Vector3 targetPos) { Vector3 directionVector = targetPos - startPos; Vector3 perpendicularDirection = new Vector3(directionVector.y, -directionVector.x).normalized * (directionVector.magnitude * 0.3f); if ((perpendicularDirection.y
아이템 별로 확률을 다르게 해서 뽑게 하기. 완전 쉽게 만들어봄. 일단 실수 없이 정수로만 하는 것으로 만듬. 실수 포함하면 계산도 복잡하지만 내가 표현하기도 힘들어서.. 최대한 곱셈을 통하여 만분율, 십만분율 등 만들고 부담없이 랜덤 나오게 만들었다. 뭐 사실 이건 개발자들보다는 기획자의 몫이 더 큰 부분이라... 많은 부분을 만들 필요도 없다고 생각했음. public class MyRandom { public RandomData[] datas; public int totalCount; public int GetRandom() { for(int i =0;i < datas.Length; i++) { datas[i].minInclusive = this.totalCount; this.totalCount +=..
유니티에서 사용할 머지 정렬을 만들었는데 확실히 c#용은 아닌 녀석임... 스테이블 정렬을 하기 위해서 일단은 쓰겠지만 앞으로 문제가 생길지도! 후우... 일단은 기록을 위해 포스팅합니다. 개선점 적어주시면 너무 감사감사.. Vector2Int를 쓴 이유는 int값 두개를 가지고 x를 기존 인덱스를 1,2,3,4... 쭉 넣어주고 y값에 비교할 밸류를 넣는 방식으로 하는데 Vector2int라고 하는 편리한 녀석을 안 쓸 이유가 없어서 활용해봤다. public static void Merge(Vector2Int[] arr, int left, int right, E_SortType sortType) { // 임시 메모리 만들기 Vector2Int[] arr2 = (Vector2Int[])arr.Clone(..
기술지향적이지만 극히 편리함과 직관성을 추구하는 나는 언제나 데이터테이블을 유니티에서 사용할 때 JSON 파일을 읽어오는 방식으로 하곤 했다. XML에 비해서 직관적이고 수정용이하며 ScriptableObject라든지.. csv라든지 다 너무 불편했기 때문, (수정이 귀찮음, 파싱에서 오류발생가능 ㅠ) 아무튼 각설하고 JSON을 사용하는데 엑셀에서 json뽑는건 몇몇 툴이 있고 유니티에서도 에셋을 통해서 편리하게 하고 있었지만 구글 스프레드시트의 클라우드성을 선호하는 나는 몇몇 애드온에서 json을 뽑아내는 걸 알고 사용해봤으나 유니티에 적용하는 클래스 시리얼라이즈 느낌이 아니어서 사용하지 않았음. 그런데 구글 문서에 스크립트를 적용하면 편하게 되겠다 싶어서 만듬. 대충 만들었는데 잘돼서 뿌듯함 일단 혹..
알고리즘 공부하면서 정리도 하기로 했음. 개인공부용이라 정리가 제 맘대로일 수 있습니다. Selection Sort 선택정렬 제일 낮은 거 선택해서 맨 앞으로 보내는 가장 직관적인 그 알고리즘! 간단한거라면 굳이어려운걸 하기 보다 걍 파악하기 쉽게 이 알고리즘을 쓰는 것도 좋다만, 데이터가 크면 클수록 시간복잡도가 높아지기에 굳이 할 필요 없는 그 알고리즘 초보자용이랄까? 풋내기용이라니 마치 나같군 1부터 10을 정렬하려면 55번의 비교연산이 필요함. 근데 만개의 데이터라면 일억번해야됨. 근데 심지어 더 줄어들지도 않음. 애당초 1,2,3,4,5,6,7,8,9,10 으로 되어있어도 55번 비교함. 시간복잡도 = O(n^2) Bubble Sort 버블정렬 옆에 있는 녀석과 비교해서 더 작은값을 앞으로 보낸..
일단 유니티 자체적으로 국가코드를 불러올 수 있는 방법은 없는 것 같아요. 우회적인 방법으로 언어 기반으로 간접적으로 알 수 있지만 신뢰도가 낮지요. 그래서 좀 더 신뢰도 높은 정보를 가져오려면 어떻게 해야하는지 정리하는 글입니다. ------------------ 1. 유니티에서 AAR 혹은 JAR 사용하기 유니티 메뉴얼에서 AAR플러그인 관련 문서입니다. https://docs.unity3d.com/kr/2017.4/Manual/AndroidAARPlugins.html AAR 플러그인과 Android 라이브러리 - Unity 매뉴얼 Android Archive(AAR) 플러그인은 컴파일된 Java, 네이티브 (C/C++)코드, 리소스 또는 Android 매니페스트가 포함된 번들입니다. .aar 파일 ..
지금 당장은 터치와 오브젝트 간의 충돌 설정을 위해서 레이어마스크를 쓰고 있는데요... 콜라이더가 여러개일경우 아니면 오류 설정을위해서 레이어마스크를 사용해야 합니다. 레이어마스크는 비트 마스크로 마스킹을 하는데요. 근데 이게 제가 대충 사용법만 알고 있었지 뭔 원리인지 모르겠어서 한 번 이 포스트에 정리해보려 합니다. 위에 보이는 레이어 설정창을 보면 커스텀 레이어가 8번부터 되어있는 걸 볼 수 있는데요. 이 숫자가 걍 보기 편하라고 있는 줄 알았는데 비트마스크의 역할을 하게 하더라고요. 그래서 LayerMask.GetMask("StageBtn"); 의 리턴값은 1024가 되는거죠 (2의 10승) 여기서 만약 레이어마스크에 UI레이어를 같이 검사하고 싶으면 2의 5승인 32를 더해서 1056이 되는 거..