반응형 개발/Unity354 Unity) 프로파일러( Profiler ) 프로파일러( Profiler ) 프로파일러는 게임을 최적화하는데 최적화된 툴이다. GPU, CPU, 렌더링, 메모리 등 여러 가지 정보를 보여준다. 프로파일링을 켜놓고 게임을 재생하면 성능에 대한 데이터를 기록해준다. 사용방법은 다음과 같다. [Window] -[Analysis] -[Profiler] 하게되면 Profiler 창이 나온다. 프로파일링을 켜놓고 게임을 재생하면 성능에 대한 데이터를 기록해준다. 개발을 진행하면서 많이드 보는 카테고리는 CPU 항목과 렌더링 항목이다. 런타임 상황에서 오브젝트를 생성하거나 연산을 하는 과정에서 유니티 특성(C#)에서 GC 콜이 발생하는 과정에서 많은 부하가 생기고 프레임 드랍을 많이 경험하기 때문이다. 프로파일러의 항목을 자세히보면 상세정보를 볼 수 있는데 현.. 2020. 6. 1. Unity) MeshCollider.convex MeshCollider.convex 오늘의 삽질은 Fbx의 파일에서 충돌 영역 관련돼서 맵에 구멍(Hole) 처리를 한상황에서 물리를 적용했을 경우에(RigidBody) 충돌 여부 관련돼서 convex의 여부를 깜빡해서 나왔다. ' MeshCollider.convex '의 설명음 다음과 같다. 충돌 감지를 위해 사용되는 메쉬 오브젝트를 나타냅니다. 이것을 true로 설정하게 되면, 해당 메쉬 충돌체는 구멍(holes)이나 입구(entrances)를 갖지 않습니다. 컨벡스 메쉬는 다른 컨벡스 충돌체나 컨벡스가 아닌 메쉬들과 충돌이 가능합니다. 따라서 만약 제공되는 기본 충돌체보다 더 디테일한 충돌체가 필요한 경우라면, 컨벡스 메쉬 충돌체는 강체들에서 적합합니다. 체크를 하게 되면 메쉬의 콜라이더가 구멍을 .. 2020. 6. 1. 문제해결) Raycast Target (터치가 안되는 삽질) Raycast Target (터치가 안 되는 삽질) 해결 UI 작업을 하던도중 버튼에 버튼이 클릭이 안 되는 경우가 생겼다.삽질과 삽질 끝에 확인된건 Debug 용으로 사용하던 Text의 'Raycast Target'이 활성화되어있던 것이었다.왼쪽의 버튼은 정상적으로 클릭이 되었지만 오른쪽의 광고보기 버튼은 Text의 영역 안에 포함되어 잇고 Raycast 세팅이 되어있어서 버튼까지 이벤트가 가지 않고 텍스트가 받았던 것이었다. 이런 간단한 삽질을 이런저런 버튼 설정이라던지 삽질을 하고 알게되었다. ㅠㅠ Unity Event System : [링크] 이벤트 시스템 - Unity 매뉴얼이벤트 시스템은 키보드, 마우스, 터치, 커스텀 입력 등 입력 기반 애플리케이션의 오브젝트에 이벤트를 전송하는 방법입니다.. 2020. 5. 11. Unity) Notch Design(Safe Area) Unity- Notch Design(Safe Area) 개발을 하는 과정에서 기본 중에 기본은 해상도 대응이다. 디스플레이되는 화면 해상도에 따라 어떻게 보일 것인지를 정해야 한다. 모바일 해상도 대응하는 과정에서 Notch Design이라는 카메라가 전면부로 나오게 되면서 생기는 이슈에 대한 대응이 필요하게 되었다. Safe Area라고 하기도한다. 이런 과정에서는 스크린 사이즈와 뷰 사이즈가 다르게 표현되어야 한다. 그래야 Notch Design 영역에 가려지는 화면이 생기지 않게 된다. Sfae Area의 영역(Notch Design)이 해당되지 않는 영역에서 화면을 그려져야 한다. 이론으로는 배경(전체 화면)을 제외한 나머지 오브젝트들이 [Root]를 기반으로 하위에 포함되고 Root는 Notch.. 2020. 5. 7. Unity) UGUI RectTransform (사각 트랜스 폼) UGUI RectTransform (사각 트랜스 폼) 유니티 Canvas에서는 RectTransform이라는 컴포넌트를 지원한다. GUI에서 위치 포지션을 설정하는 기본적인 컴포넌트로 UI에 대한 작업을 지원한다. 기본적으로 Canvas의 하위에 있는 UI에 포함되는 항목에 자동으로 붙으면 LocalPosition을 사용한 값으로 인스펙트의 값이 변경된다. RectTransform은 GUI에 사용되지만 다른 용도로도 사용할 수 있다. 사각형의 위치, 크기 및 고정을 저장하고 조작하는 데 사용되며 상위(부모) RectTransform을 기반으로 다양한 스케일링 형식을 지원한다. Alt 단축키 (Also Set Position) Shift 단춬키 (Also Set Pivot) < Inspector 속성 설명.. 2020. 5. 3. Unity) Unity JSON Library Unity JSON Library 유니티에서 JSON을 사용할 때 편리한 라이브러리를 소개하려고 한다. Unity Asset 스토어에서 JSON.Net을 검색하면 다음과 같이 나오는데 impot 한다. 특징으로는 클래스를SerializeObject 와 DeserializeObject 가 가능하다는 장점이 있다. 그냥 string 을 읽어서 파싱을 하지 않아도 된다. 데이터 클래스로 바로 변환하면 된다. 데이터를 InfoSkinUnit 클래스로 바로 변환하는 과정이다. 변환할 JSON 데이터는 다음과 같다. InfoSkinUnit의 클래스는 다음과 같다. JObject loaddata = JObject.Parse(_loadstring); JObject levelJObject = (JObject)loadda.. 2020. 4. 29. 문제해결) Android 빌드 시 에러 UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors Android 빌드 시 에러 UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors UnityEditor.BuildPlayerWindow+BuildMethodException: 2 errors at UnityEditor.BuildPlayerWindow+DefaultBuildMethods.BuildPlayer (UnityEditor.BuildPlayerOptions options) [0x00242] in /Users/builduser/buildslave/unity/build/Editor/Mono/BuildPlayerWindowBuildMethods.cs:194 at UnityEditor.BuildPlayerWindow.CallBuildMethods (S.. 2020. 4. 22. Unity)Unity Hierarchy 순서 변경 Unity Hierarchy 순서 변경 Unity에서는 기본적으로 Canvas를 기준으로 Hierarchy의 순서(위에서 밑으로) 계층으로 Draw 된다. 그렇기 때문에 Hierarchy의 순서를 변경해야하는 경우가 종종 있다. 스크립트로 처리할 경우는 다음과 같다. Index to 0 m_IndexNumber = 0; //Set the Sibling Index transform.SetSiblingIndex(m_IndexNumber); //Output the Sibling Index to the console Debug.Log("Sibling Index : " + transform.GetSiblingIndex()); } void OnGUI() { //Press this Button to increase .. 2020. 4. 20. Unity) Rigidboy(Script)로 (Freeze)프리즈 처리하기 Rigidboy(Script)로 (Freeze)프리즈 처리하기 Rigidboy는 물리에 대한 처리를 하기 위한 기본 컴포넌트이다. Rigidboy를 사용하다보면 특정 순간에는 Freeze 기능을 수정해야 하는 경우가 생길 때 위와 같이 처리하면 된다. +) X와 Z의 포지션을 프리즈 하기 rigidbody.constraints=RigidbodyConstraints.FreezePositionX | RigidbodyConstraints.FreezePositionZ; +) 모두 프리즈 하기 rigidbody.constraints = RigidbodyConstraints.FreezeAll; Unity Rigidbody : [링크] 리지드바디 - Unity 매뉴얼 Rigidbody 는 GameObject 가 물리.. 2020. 4. 14. Unity) NavMesh 만들기 NavMesh 만들기 유니티에서는 AI -Navigation을 지원한다. Unity 3D 프로젝트를 생성하고 메뉴의 [Window- AI - Navigation]을 선택하면 설정창이 나온다. Navigation 항목에는 4가지 서브 메뉴가 있다. Agents - 길을 찾을 봇의 설정이고 Areas - 길을 찾는 영역 (우선순위)를 설정할수 있다. Bake - Navmesh를 만들 설정이다. Object - Navmesh를 만들기위한 Object를 설정하기 위함이다(이동 부락, 이동 가능, 점프 등등) 오브젝트 설정 Navmesh를 만들 오브젝트들을 선택하고 Walkable을 선택하고 Bake를 하면 다음과 같이 NavMesh가 생성된 것을 확인할 수 있다. Navmesh는 Scene당 한 개만 만들어지고.. 2020. 4. 12. Unity)다중 Scene 로드 및 처리(Scene Additive) 다중 Scene 로드 및 처리(Scene Additive) Unity에서는 기본적으로 Single Scene의 형태이다. 하지만 작업하다 보면 Scene을 여러 개 중복해서 사용해야 하는 경우가 생긴다. 본인의 경우에서는 NavMesh를 사용하는 상황인데 NavMesh는 Scene당 1개(Only One) 이기 때문에 여러 가지 NavMesh를 사용하기 위해서는 결국 맵 신을 Attach 해서 NavMesh를 교체하는 방법을 사용하고 있다. 그 외 여러 가지 기타 상황에 의거해서 Scene을 여러 개 사용하는 경우도 있다. (인게임/아웃 게임 구분)하는 CDN으로 맵을 분리하는 경우 등등.. using UnityScene = UnityEngine.SceneManagement; UnityEngine의 Sc.. 2020. 4. 9. 문제해결)Unity) Error - AnimationEvent has no function name specified! AnimationEvent has no function name specified! AnimationEvent has no function name specified!라는 에러가 콘솔에 찍히는 경우가 종종 발생한다. 이 에러가 나는경우에는 해당 애니메이션 클립의 이벤트가 정상적이지 않는 경우 (이름이 없거나, 제외된) 경우에 발생한다. 해결방법은 다음과 같다. 해당 애니메이션의 클립으로 선택해서 이벤트를 삭제해주면 된다. Unity Animation Event : [링크] 애니메이션 이벤트 사용 - Unity 매뉴얼 애니메이션 이벤트를 사용하여 애니메이션 클립을 최대한 활용할 수 있으며, 타임라인의 특정 시간에 오브젝트의 스크립트에 포함된 함수를 호출할 수 있습니다. docs.unity3d.com ★☆☆☆☆ 2020. 2. 28. Unity) 3D Audio Sound 3D Audio Sound Uniy 3D에서는 3D 공간을 기반으로 사운드가 재생이 가능하다. Audio Listener의 위치를 기반으로 사운드의 distance를 이용해서 내부에서 처리하는 듯하다. 오디오의 설정은 다음과 같다. 3D Sound Setting 의 거리나 볼륨 등 수치를 설정하면 된다. 도플러 효과는 소리를 듣는 리스너가 움직이는 속도 등에 따라 소리가 다르게 들리는 정도이다. 설정은 다음과 같다. 3D Sound Settings Spatial Blend 매개 변수에 비례하여 적용되는 설정. Doppler Level 이 오디오 소스에 적용될 도플러 효과의 양을 결정합니다 (0으로 설정 한 경우 효과가 적용되지 않음). Spread 스피커 공간에서 확산 각도를 3D 스테레오 또는 멀티 채.. 2020. 2. 21. Unity) 스크립트에서 자동으로 컴포넌트 추가하기 스크립트에서 자동으로 컴포넌트 추가하기 using System.Collections; using System.Collections.Generic; using UnityEngine; [RequireComponent(typeof(BoxCollider))] public class Test : MonoBehaviour { private BoxCollider m_Collider = null; void Start() { this.m_Collider = this.GetComponent(); } void Update() { } } RequireComponent 속성은 요구되는 의존 컴포넌트를 자동으로 추가해줍니다. 특정 스크립트에서 항상 필요한 컴포넌트가 있는 경우에 의존 컴포넌트로 처리를 하면 따로 일일이 신경 쓰지.. 2020. 2. 18. Unity) 플랫폼 의존 컴파일 플랫폼 의존 컴파일 Unity는 “플랫폼 의존 컴파일”이라는 기능이 있는데 Unity의 특성상 멀티 플랫폼을 지원하다 보니 생긴 기능으로 스크립트에 해당 플랫폼에 대한 정의를 하게되면 해당 플랫폼일 때 분기를 처리가 가능하다 사용법은 다음과 같다.\ #if UNITY_EDITOR //유니티 에디터에서 실행될 스크립트 코드 #endif 유니티로 개발을 하는 이유는 원소스 멀티 플랫폼 빌드를 지원하기 때문이라고 생각한다. 그 외 여러 가지 에디터적인 엔진 이점도 있지만 다중 플랫폼을 개발해야 하는 개발 입장에서는 원소스 멀티 빌드는 굉장히 이점이라고 생각한다. 유니티에서 지원하는 플랫폼 매크로는 다음과 같다. 플랫폼 매크로 정의 UNITY_EDITOR Unity 스크립트에서 지원하는 플랫폼 매크로 정의 : .. 2020. 2. 12. 이전 1 ··· 20 21 22 23 24 다음 반응형