유니티/꿀팁ㅇㅇㅇ

    몽고DB 기본 명령어

    몽고DB를 실행할 때는 설치된 경로로 이동해 실행한다. (C:\Program Files\MongoDB\Server\버전\bin)C:\data\db 폴더가 없으면 실행되지 않으므로 반드시 폴더를 만든다.몽고DB를 사용하려면 먼저 mongod를 통해 서버를 실행한다.이후, 같은 폴더에서 콘솔 하나를 더 열고 mongo를 입력한다. 관리자계정 추가 > use admin > db.createUser({user:'이름', pwd:'비번', roles:['root']}) 관리자계정 추가 후 mongod 콘솔 종료후, mongod --auth 명령어로 접속mongo 콘솔도 마찬가지로 mongo admin -u 이름 -p 비밀번호 로 접속 데이터베이스 생성 > use [데이터베이스 이름] 데이터베이스 목록 조회 > s..

    VSyncCount

    Quality에서 VSyncCount를 Don't Sync로 변경하면 스크립트상에서 TargetFrame을 사용해 프레임을 고정시킬 수 있다. 라고 하는데 난 적용이 안된다. 프로파일러상에서 WaitForFPS가 80~90% 이상을 차지하기 때문에 게임에 영향을 줄 수 있는데 이 세가지가 연관이 되어 있다. //해결방법스크립트상에서 VSyncCount = 0 으로 설정하면 WaitForFPS가 사라진다.VSyncCount = 0 으로 설정하고 나서 Input.GetMouseButtonDown 이나 KeyDown 등이 제대로 작동하지 않는 문제가 생기는데이럴 때, 버튼을 사용하면 해결하면 된다. (단, 버튼을 사용하는 경우 ButtonUp때 로직이 발동되므로 참고)또, 버튼을 사용하면 Eventsystem..

    캐릭터 폴리곤 줄이기

    캐릭터 폴리곤 줄이기

    준비물 : 메쉬 온라인 툴, 폴리곤 개수를 줄일 모델 (2개) 메쉬 온라인 사이트에서 툴을 다운로드 (http://www.mesh-online.net/download.html) 다운로드한 파일을 압축 풀고, 유니티 프로젝트 Asset폴더 안에 넣는다. 폴리곤 수를 줄일 모델을 임포트시키고, 모델을 선택한 상태에서 유니티 상단바에 위치한 Window - Mantis LOD Editor - Component - Editor - Mantis LOD Editor Online 을 선택한다. 오른쪽에 추가된 스크립트에서 Upload Mesh Data를 선택한다. (선택된 모델에 대한 메쉬 데이터를 업로드)업로드가 완료되면 Triangles에 메쉬개수가 표시된다. (해당 용 모델의 현재 폴리곤 수 : 1008개) Q..

    클래스 생성자

    public class Item{public int ID;public string Name;public string Des; //생성자는 Item이 생성되었을 때 값을 채워주기 위함pulbic Item (int id, string name, string des){ID = id;Name = name;Des = des;}} public class LoadSaveManager : Monobehaviour { void CreateItem(){Item MyItem = new Item();

    미사일이 플레이어 정면 방향 바라보게 만들기

    //플레이어 정면 방향Vector direction = Player.transform.localRotation * Vector3.forward; //미사일이 플레이어의 정면 방향을 바라봄Missile.transform.localRotation = Quaternion.LookRotation(direction);

    블렌더 1일

    영역이 3개로 나뉘어져 있고, 독립적인 기능을 수행 File - Load Factory Setting - OK 누르면 처음 세팅으로 되돌아감 레이아웃으로 현재 영역 세팅을 저장시킬 수 있다. File - User Preferences - System - DPI 수정하면 폰트 사이즈 조정 가능하다. 카메라 회전법) 마우스 가운데 버튼, Shift + 마우스 가운데 버튼 배치를 세밀하게 작업할 때 Perspective Camera에서 Ortho Camera로 변경 (넘버 5) View - Toggle QuadView로 하면 동시에 4개의 여러뷰를 볼 수 있다. 영역 안에 작은 영역을 리전이라고 부른다. +버튼 왼쪽, 하단 모두 리전임 오른쪽 리전 하단에 디스플레이 - Lock을 풀어주면 4개의 쿼드뷰에서 각..

    모바일 렌더링 세팅

    플레이어세팅에서 PC는 Linear / 모바일은 Gamma 퀄리티세팅에서모바일만 Fantastic -> Fastest로 메인카메라를 모바일은 Foward로가장 오래된 렌더링 방식.. 라이팅을 많이 지원하지 않는다.PC는 Deffered 렌더링 이 세팅에서 그림자를 찍는법, 캐릭터와 배경간의 동적 쉐도우와 정적 쉐도우 1. 매터리얼을 모바일/버텍스릿 (디렉셔널 라이트 온리)로 설정한 매터리얼로 배경에 적용 2. 디렉셔널 라이트를 리얼타임으로 사용X, 베이크로 변경 (그러면 오브젝트들이 어두워지는데 오브젝트들을 Static 설정해주면 다시 라이팅이 적용된다) 3. 라이트 세팅에서 Baked Gi를 통해 씬을 굽게 된다. (Baked Resolution을 낮추거나 CPU Usage를 낮추면 연산이 빨라진다.)..

    뷰포리아

    작업된 스크린샷

    CPU와 GPU, 렌더링 초간단 학습

    CPU (Central Processing Unit, 중앙 처리 장치) : 화면에 그려야할 대상과 대상을 그릴 방법 결정 GPU (Graphics Processing Unit, 그래픽 처리 장치) : CPU의 지시를 받아 화면을 그림 [렌더링 파이프라인] . 씬 안의 모든 오브젝트를 검사한다. . 카메라의 뷰 프러스텀에 위치해야 렌더링되며, 렌더링 되지 않는 오브젝트는 컬(Cull) 처리 된다고 한다. . CPU가 렌더링 되는 모든 오브젝트에 대한 정보를 수집하면 드로우 콜(Draw Call)로 정렬한다. . 드로우콜에는 단일 메쉬와 이 메쉬의 렌더링 방법에 대한 정보가 담겨있다. ex) 어떤 텍스쳐를 사용하는 지에 대한 정보도 담겨 있다. . 서로 다른 오브젝트를 동일한 드로우 콜로 결합하는 것을 배칭..

    해결해야할 과제

    - 얼리기 사용했을 때 애니메이터 상태 값 초기화하는 법

    가비지 컬렉션이란?

    가비지 컬렉터에서 검사해야하는 오브젝트나 참조값이 많은 경우, 이를 모두 검사하는 과정이 느려진다. 이로 인해 게임이 뚝뚝 끊기거나 실행이 느려지는데 가비지 컬렉터과 연관된 문제를 살펴보면, (1) 불필요한 시간에 가비지 컬렉터 실행 - CPU가 중요한 작업을 처리하고 있는 경우, 가비지 컬렉터에 의해 발생한 약간의 오버헤드는 프레임 속도와 성능을 떨어뜨린다. (2) 힙 파편화 - 힙 상에 메모리가 할당되면, 데이터 크기에 따라 메모리 공간에 크기가 서로 다른 메모리 블록으로 메모리를 차지하게 되는데 이러한 메모리 블록이 힙을 반환되면, 힙은 할당된 메모리 블록으로 구분되는 여러 개의 작은 블록으로 분할될 수 있다. (즉, 사용 가능한 전체 메모리가 많아도 가비지 컬렉터를 실행하거나 힙을 확장하지 않으면..

    프레임

    프레임은 게임 성능의 기준이다. 대부분 현대 게임은 60프레임을 목표로 하며, 30프레임 이하는 플레이어에게 불쾌함을 준다. 하지만 가장 중요한 것은 속도가 아니라 프레임이 일정하게 유지되는 것이다.

    [이펙트] 텍스쳐 최적화

    일반적으로 실무에서 TGA, PNG를 사용한다. TGA는 32bit로 저장하면 알파를 사용할 수 있다. (24bit는 알파 사용 불가능) PNG는 PNG24로 사용하고, (대체로, 언리얼에서 TGA를 사용하며 유니티에서 PNG를 사용한다) TGA보단 PNG 256x256 사이즈 기준으로 용량이 대략 25배 차이난다. (10kb < 250kb) 중요한 건 텍스쳐 포맷 형식 텍스쳐를 유니티로 불러오면 세팅이 중요하다. (1) Alpha Source 1. None - 알파를 사용하지 않는다. 2. Input TextureAlpha - 텍스쳐의 알파를 사용 3. From Gray Scale - 알아서 알파를 빼주는 기능 (2) Alpha Is Transparency - 이 기능을 체크하면 알파가 투명해진다. (..

    연습장.

    1. Screen.sleepTimeout = SleepTimeout.NeverSleep; 2. 스크롤안에 버튼이 들어가서 잘 안눌리는 경우가 발생한다. EventSystem 터치감도 조절private const float inchToCm = 2.54f; [SerializeField]private EventSystem eventSystem = null; [SerializeField]private float dragThresholdCM = 0.5f;//For drag Threshold private void SetDragThreshold(){ if (eventSystem != null) { eventSystem.pixelDragThreshold = (int)(dragThresholdCM * Screen.dp..

    유용하게 쓰이는 Mathf 함수

    Mathf.Abs(float f): 데이터 절대값 반환 Debug.Log(Mathf.Abs(-100));: 100 (결과값) Mathf.Clamp(float f, float min, float max): 최소값, 최대값 범위 내 데이터 반환: ※ 데이터가 1이고, 최소값 0, 최대값 10인 경우 1을 반환 for (int ii = 0; ii < 5; ii++){Debug.Log(Mathf.Clamp(ii, 1.0f, 3.0f));}: 1, 1, 2, 3, 3 (결과값) Mathf.PingPong(float A, float B): A값이 B값에 도달하면 -가 되고,: 0이 되면 다시 최대값까지 + void Update(){transform.position = new Vector3(Mathf.PingPong..