본문 바로가기
반응형

개발/Unity312

Unity) Memory Profiler Memory Profiler Unity를 개발하는 과정에서 최적화나 퍼포먼스를 확인할 때 사용하는 툴 중 'Memory'영역을 프로파일링 해주는 툴이다. [Window] -[Package Manager]에서 Memory profiler라고 검색한다. 검색할 때 나오지 않으면 advaned라고 옆의 설정을 변경하면 검색이 된다. 다운로드한 이후에는 [Window]-[Analysis]-[Memory Profiler] 메뉴가 생긴다. 클릭하게 되면 창이 한 개 뜬다. 현재를 기준으로 메모리를 확인하고 싶은 화면에서 Swap을 눌러서 SnapShot을 찍는다. 그러면 다음과 같이 항목이 무수히 많이 나온다. 여기의 항목을 세분화해서 보고싶으면 클릭하면 더 상세하게 나온다. 많은 항목들이 보여서 정신이 없긴하지만.. 2020. 11. 3.
Unity) 로그 파일 경로 ( Log File Path ) 로그 파일 경로 ( Log File Path ) Unity에서는 문제가 발생하는 것을 대비해서 Log라는 정보를 남긴다. 운영 체제 별로 위치 경로가 다르다. 문제가 나는 경우 Log File이 많은 도움을 주는데 경로를 알아보도록 하자. 각 상황마다 경로다 다른데 가장 많이 보는 것은 Player일 것이다. Editor에서는 대부분 console 창에 기록을 남기는 경우가 많다. 크래쉬가 계속 나지 않는 이상 코드에서 Debug.Brake()를 사용해서 라던지 추적이 어느 정도 가능하다. 경로에 들어가게되면 실제 Log File은 txt로 기록되는 것을 확인 가능하다. Unity Documentation Log Files : [링크] Unity - Manual: Log Files Low-level na.. 2020. 10. 28.
Unity)해결) InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings. Unity 프로젝트에서 실행하면 Standlone Input Module에서 에러가 나는 경우가 존재한다. 에러코드를 추적해보면 Input Manager를 사용하지 못한다고 다음과 같이 에러가 발생한다. InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings. UnityEngine.Input.get_mousePosition () (at :0) 위와 같이 에러가 나는 경우는 프로젝트를 그냥 열어서 프로젝트에서 Switch Platform을 사용해서.. 2020. 10. 27.
Unity)Firebase)Firebase Storage 활용하기 Firebase Storage 활용하기 이번에는 Firebase Storage를 활용해보자 단순 저장소로도 사용이 가능하고 해당 이미지를 넣고 로드하는것도 가능하다. Console 페이지에서 Storage 를 생성한다. Storage에서도 보안 규칙(접근제한) 을 설정할 수 있다. 이미지 파일을 업로드해서 테스트를 진행한다. Firebase.Storage.StorageReference https_reference = storage.GetReferenceFromUrl("gs://test-6cbb5.appspot.com/temp.jpg"); const long maxAllowedSize = 1 * 1024 * 1024; https_reference.GetBytesAsync(maxAllowedSize).Con.. 2020. 10. 27.
Unity)Firebase) Remote Config 활용하기 Firebase  Remote Config 활용하기Remote Config는 특정한 config 값 빌드(실행파일)에 포함하지 않고 외부에서 변경할 수 있게 하는 시스템이다. 관리자 페이지에서 Config 값을 변경하면 Config 값을 읽도록 구성되어있는 서비스에서 Fetch를 받게 되면 변경된 값을 가져올 수 있다. Firebase에서는 기본적으로 JSON을 기본 형태로 적용되기 때문에 Key, Value를 기본으로 입력해야 한다. Firebase 참고 URL :  [원격 구성] Firebase에서 설정값을 넣으면 해당 값에 대한 가져오는 코드를 처리해야 한다.가이드에 보면 Default 값을 명시하라고 되어있어서 계정을 생성하는 순간에 값을 초기화해준다.그리고 Fetch를 받.. 2020. 10. 26.
Unity)Firebase) Function Database Trigger Example Firebase) Function Database Trigger Example Firebase Functions의 개발환경은 TypeScript 으로 진행했다. 구글 검색을 해봐도 예시가 별로 없어서 기록차 포스팅하게 되었다. Trigger라는 것은 특정 순간에 자동으로 실행되는 이벤트를 말하는 것이다. Example 코드에서는 유저 생성될 때 'onUserCreate'를 호출해서 createTime이라는 값을 자동으로 database에 쓰는 것을 목표로 했다. 'onChangeMessage'는 데이터베이스의 root의 하위 /users/자신의 id/message의 값이 변경되는 순간 messagePrev라는 항목에 이전 message의 값을 저장하도록 처리했다. (이전의 메시지를 자동으로 기록하도록) .. 2020. 10. 21.
Unity) Android Resolver ERROR: JAVA_HOME ~ Android Resolver  ERROR: JAVA_HOME ~Unity에서 Android Resolver를 사용하다 보면 ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation.  라는 에러를 볼 수 있다. JAVA_HOME에 대한 환경변수값이 설정되어 있지 않아서 그런 경우인데 이럴 경우에는 JAVA_HOME의 환경 변수만 잡아주면 해결이 된다.[Edit] -[Preferences]-[External Tools]- JDK의 경로를 Co.. 2020. 10. 19.
Unity) Library/PackageCache/ ~ 에러 Library/PackageCache/ ~ 에러유니티에서 개발하다 보면 개발환경에 따라 SDK 업데이트에 따라 캐싱 데이터가 문제가 생긴다.그 과정에서 Libary/PackageCache/~ 에러가 발생하는데 그럴 경우에는 다음과 같이 진행하면 해결된다. Unity Menu -[Help]-[Reset Packages to defaults]를 누른다. 그러면 패키지를 다시 재시작하면서 PackageCache 를 다시 지우고 임포트 한다.그 과정에서 에러는 사라진다.  ★★☆☆☆ 2020. 10. 15.
Unity) 인스펙터 읽기 전용 만들기 (Inspector ReadOnly Property) 인스펙터 읽기 전용 만들기 (Inspecator ReadOnly PropertyInspector ReadOnly Property) 유니티 개발을 하다보면. Property를 노출하는 과정에서 변경이 안되어야 하는 상황이 생긴다. ReadOnly 속성으로 읽기만 가능하도록 변경을 해서 사용해야하는 경우에서 사용 가능하다. 기능은 심플하다. 노출은 되지만 수정이 불가능한 상태로 돼서 '변경되지 않도록' 값을 쓰지 못하게 만드는 것이다. 코드는 다음과 같다. PropertyDrawer을 이용한 GUI.enable을 사용한 방법이다. using UnityEngine; using UnityEditor; public class ReadOnlyAttribute : Proper.. 2020. 10. 15.
Unity)Firebase) Database 설정 및 읽고 쓰기 Firebase Database 설정 및 읽고 쓰기 Firebase에서 지원하는 많은 기능 중 Database를 사용하고자 한다. 간략하게 Firebase는 실시간 데이터베이스를 지원하는데 간단한 게임의 Database를 대신해서 사용하기에 꽤나 쓸만하다고 생각한다. Firebase를 이용해서 실제 서비스도 해봤는데, 무료로 쓰다가 패킷이 많으면 유료로 전환이 가능해서 처음 구축해서 쓰기에는 좋다. NoSql 기반으로 JSON 형태로 데이터를 읽고 쓸수 있다. Firebase 에서 Realtime Database를 선택한다. 여기에서 규칙을 설정해야한다. 규칙이라는 건 간단히 말하면 권한이다. 해당 경로에 접근할 수 있는 권한을 부여하는 항목이다. 기본적으로 모두 다 접근 가능한 형태로 작업을 진행한다... 2020. 9. 24.
Unity) Custom C# DLL 만들고 적용하기 Unity Custom C# DLL 만들고 적용하기 공통적인 코드들을 묶어서 dll을 만들어서 import 해서 사용할 예정이다. 기본적으로 dll로 묶으면 내부 코드를 볼 수 없기 때문에 수정을 바로 하기보다는 특정 주기로 묶어서 필요한 것들을 사용하는 과정에서 필요에 의해서 하는 게 좋다. IDE : Visual Studio 비주얼 스튜디오를 열어서 c#의 dll을 만들려는 과정에서 스탠더드로 설치가 돼서 c#의 항목에서는 항목이 없어서 업데이트를 진행했다. 기본적으로 Unity에 종속된 라이브러리를 만들려고 한다. 참고 : https://docs.unity3d.com/Manual/UsingDLL.html Unity - Manual: Managed plug-ins Managed plug-ins Man.. 2020. 9. 23.
Unity)해결)Copying assembly from 'Temp/Assembly-CSharp.dll' to 'Library/ScriptAssemblies/Assembly-CSharp.dll' failed Copying assembly from 'Temp/Assembly-CSharp.dll' to 'Library/ScriptAssemblies/Assembly-CSharp.dll' failed 프로젝트를 외부 저장소(Git, Svn 등등)에 받는 과정에서 한 번씩 위와 같은 오류가 발생한다. 원인은 컴파일러가 정상적으로 로드가 되지 못해서 에러가 나는 과정인데 여러 가지 방법이 있다. -Temp 파일 폴더를 삭제하고 프로젝트를 실행 -> 여부 확인 - [Assets]-[Reimport All] -> 여부 확인 - 유니티 프로젝트를 새로 만들고 script, resource 등을 카피해서 덮어쓰기. 컴파일을 처리하는 라이브러리가 정상적으로 연결되지 않아서 이런 이슈가 생기는 듯하다. ★★☆☆☆ 2020. 9. 18.
Unity) 조이스틱 구현하기(JoyStick) 조이스틱 구현하기(JoyStick) 유닛의 이동을 처리하기 위해서 작업하는 과정에서 조이스틱을 작업하기로 구성을 했다. 조이스틱은 실질적으로 방향에 대한 입력만 구분을 하고 실제로는 속력을 처리했다. 물리에 대한 고려를 처리하지 않기 위해서 (Velocity)를 처리하지 않고 SetPosition으로 처리를 했다. 핵심 코드를 이루고 있는 요소는 입력이다. IBeginDragHandler IDragHandler IEndDragHandler 에서 입력받은 순간 Vector2 inputDir = eventData.position - rectTransform.anchoredPosition; this.m_vMoveDir = inputDir.magnitude 2020. 9. 17.
Unity) PlayMode 시작 씬 설정 PlayMode 시작 씬 설정 Unity에서 여러 가지 씬을 작업하다 보면 PlayMode (재생 버튼)을 누르게 되면 해당 씬을 시작한다. 강제로 시작씬을 만들어서 플로우를 정상 처리할 수 있다. 필요한 경우는 (회원가입, 초기화등) 순서가 필요한 것이나 언제든지 다른 씬에서 플레이를 할 수 있도록 하는 방식이다. 코드는 다음과 같다. [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] static void InitScene() { Logger.LogFormat("[SceneTitle] Init Scene --------------"); if (UnityEngine.SceneManagement.SceneManager.Ge.. 2020. 9. 9.
Unity)Firebase) Unity 연동하기 Firebase Unity 연동하기 Unity에서 Firebase를 연동해서 Auth 까지 진행하는 포스팅이다. Firebase 설명은 다음과 같다. 개발하는 과정에서 필요한 솔루션(지표, 푸쉬, 이벤트, 플랫폼 로그인, 스토리지, DB등)을 지원해주는 모바일 웹 어플리케이션 개발 플랫폼 이다. Firebase에서 로그인을 진행하고 프로젝트 만들기를 진행한다. 프로젝트이름 (파이어베이스 콘솔에서 확인할 이름) 여기서 Google 애널리틱스를 사용을 추천한다. 계정이 있으면 계정을 선택한다. 프로젝트 만들기를 진행하면 프로젝트가 생성된다. 이후의 가이드는 Firebase의 가이드를 참고한다. https://firebase.google.com/docs/auth/unity/start?hl=ko Unity에서 .. 2020. 9. 9.
반응형