본문 바로가기
반응형

개발/Unity312

Unity) IL2CPP란? IL2CPP란? 유니티에서 빌드를 할 때 IL2CPP라는 형식으로 난독화 하는 옵션이 있다. 유니티는 C#기반으로 CIL(MSIL)이라는 미들 코드를 만들어 낸다. 미들 코드를 가지고 원시 코드(네이티브 코드)로 변경하는 과정을 JIT Compiler가 수행을 한다. 중간 코드(CIL)에서는 실행 머신 환경에 관계없이 동일 코드를 실행할 수 있다. 공식 설명은 다음과 같다. URL :https://docs.unity3d.com/kr/2019.1/Manual/IL2CPP.html IL2CPP - Unity 매뉴얼 IL2CPP(C++로 변환하는 중간 언어)는 Unity에서 개발한 스크립팅 백엔드로, 여러 플랫폼용 프로젝트를 빌드할 때 Mono 대신 사용할 수 있습니다. IL2CPP를 사용하여 프로젝트를 빌드.. 2020. 9. 7.
Unity) Logger Class Logger Class 유니티에서 Debug.Log 를 쓰다보면 특정상황에서 로그를 모두 출력을 하지 않는다 던가. 특정상황에서 로그를 컨트롤해야하는 상황이 생긴다. 기본적으로 Logger에서 값을 찍는 과정에서 (테스트 및 확인등등)여러 용도로 확인하기 위해서 많이 사용하기 때문에 로그를 처리안하는것만 진행해도 효과를 보는 경우가 많다. 디버그 모드 > 상용 모드로 작업하는 과정은 필수라고 보면 된다. 기본 메커니즘은 전처리기능을 사용한다. [Player Setting] -[Other Settings] -[Scripting Define Symbols] - 'ENABLE_LOG'라고 설정하고 사용한다. /** * 생성일 : 2019년 12월 10일 PM 1시 23분 * 생성자 : - * [Project .. 2020. 9. 7.
Unity)해결) Copying assembly from 'Temp/com.unity.multiplayer-hlapi.Runtime.dll' t Copying assembly from 'Temp/com.unity.multiplayer-hlapi.Runtime.dll' to 'Library/ScriptAssemblies/com.unity.multiplayer-hlapi.Runtime.dll'failed 해결 유니티 프로젝트를 실행하니 위와 같은 오류가 발생했다.프로젝트를 열면서 프로젝트의 Temp파일이 생기는데. 이 Temp파일에서 라이브러리를 인식하는 과정이 실패한 경우이다.이럴 때는 과감하게 [Assets]-[Reimport All]을 실행한다. 라이브러리 및 환경을 다시 세팅하는데 시간이 좀 걸린다. 다시 링크 깨진 것들이라던 지, 캐싱 등을 다시 프로젝트를 구성하는 과정에서 해결된다. ★★☆☆☆ 2020. 9. 6.
Unity) Asset Bundles Asset Bundles Unity에서 대용량 Resources를 관리, 버전별 관리, 로컬라이징 등 여러 가지 면에서 활용 가능한 에셋을 압축해서 다운로드하고 로드할 수 있는 시스템이다. 어셋들의 집합이 어셋번들이고 어셋 번들을 사용하는 곳에서 다운로드하여서 압축을 푼다 에셋 번들은 FTP(File Transfer Protocol), CDN(Content Delivery Network)를 통해서 업로드 및 다운로드한다. URL :https://docs.unity3d.com/kr/530/Manual/AssetBundlesIntro.html 유니티 - 매뉴얼: 에셋번들 (AssetBundles) 로우 레벨 네이티브 플러그인 인터페이스(Low-level Native Plugin Interface) 4.x버전.. 2020. 9. 3.
Unity) 카메라 화면 안에 있는지 여부 판단(object In the camera) 카메라 화면 안에 있는지 여부 판단(object In the camera) 카메라를 기준으로 카메라밖에 있는 오브젝트인지 판단을 해서 ObjectPool 작업을 진행하려고 한다. 예전에는 화면 밖의 어떤 오브젝트 or 포지션을 기준으로 작업했었는데. 이번에는 카메라 화면 안에 있는지 판단해서 없으면 Object를 Pool에게 되돌려 주려고 한다. 작업된 코드는 다음과 같다. public bool IsTargetVisible(Camera _camera, Transform _transform) { var planes = GeometryUtility.CalculateFrustumPlanes(_camera); var point = _transform.position; foreach (var plane in pl.. 2020. 8. 21.
Unity) 이미지 Pixel 구분하기 이미지 Pixel 구분하기 특정 상황에서 이미지의 Pixel을 구분해서 데이터를 처리해야 하는 경우가 종종 생긴다. 어떤 모양(Shape)을 처리하는 과정에서는 이미지를 읽어서 자동화 하는 과정에서 사용하면 굉장히 편할듯하다. 이미지를 넣고 데이터화를 시키는 과정을 거치게되면 해당 그림 만큼 데이터화가 가능하다. 읽은 데이터는 다음과 같다. 이미지는 인터넷에서 아무거나 추출했다. 실제 처리한 데이터는 다음과 같다. Texture를 읽고 해당 데이터의 width, height 를 GetPixel로 Color 데이터를 추출해서 해당 Color 데이터가 특정 기준과 비교를 하는 과정을 처리 했다. 이미지를 읽는 과정에서 Read/Write Enabled 설정을 True 로 변경해야 가능하다. 이미지를 기준으로.. 2020. 8. 10.
Unity) Device Simulator(v2019) Device Simulator(v2019) Unity 2019 이상 버전에서는 Device Simulator가 포함되어있다. 예전에는 Game Scene에서 해상도만 따로 수정이 가능한 수준이었지만 지금은 Unity에 Package Manager에 포함되어있다. 개인적으로는 해상도 대응 및 Safe Area(Notch Design) 확인을 하기위해서는 설치하는 것을 추천한다. :D 설치 및 사용방법은 다음과 같다. Package Manager를 install 한다. install 되면 [Window] - [ Genneral]-[Device Simulator] 항목이 생긴다. 초록색 영역은 Safe Area를 나타낸다. Screen 세팅도 가능하고 여러 디바이스를 지원한다. 모바일로 개발하는 과정에서는 필.. 2020. 8. 3.
Unity) 2D Curve Editor 샘플코드 2D Curve Editor 샘플 코드 예전에 참고한 2D Curve의 샘플 코드를 작성했다. 2D로 베지어 곡선을 이용해서 포인트 포인트를 처리했고 Edit의 형태로 나중에도 많이 사용이 가능할 거라는 생각이 들어서 작업했다. 간략하게 설명하면 Event를 받아서 Shift 버튼과 마우스 클릭을 하게 되면 (Button이 아닌 경우) 해당 path에 Segment를 한 개 추가한다. Undo.RecordObject는 해당 데이터를 Undo를 할 수 있도록 처리하는 기능이다. void Input(){ Event guiEvent = Event.current; Vector2 mousePos = HandleUtility.GUIPointToWorldRay(guiEvent.mousePosition).origin;.. 2020. 7. 29.
Unity)로컬 이어하기 작업(Save & Load - BinaryFoatter) 로컬 이어하기 작업(Save & Load - BinaryFoatter) 개발을 진행하다 보면 중간에 저장할 때 로드와 이어하기에 대한 작업을 진행하는 경우가 많다. 저장할 메모리를 Binary로 쓰고 읽는 방식을 사용하면 매우 편리하다. Unity의 Life Cycle 중에서 OnApplicationQuit 하는 순간에 현재 저장된 데이터를 Save 하고 다시 앱을 실행하는 경우에 저장된 데이터가 존재하면 이어하는 처리를 진행했다. 샘플 코드 예제는 다음과 같다. /* * 설명 : */ using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Runtime.Serialization.Formatter.. 2020. 7. 29.
Unity)해결) Request error (error) : UnityEditor.AsyncHTTPClient:Done(State, Int32) Request error (error) : UnityEditor.AsyncHTTPClient:Done(State, Int32) 해결 Unity 작업 도중 이런 에러가 나는 경우가 있다. 메뉴 [Edit] - [Preferences]-[General] - [Show Asset Store search hits]를 체크 해제하면 된다. Show Asset Store search hits의 항목은 프로젝트 '브라우저 내에 스토어의 무료/유료 에셋의 수를 표시' 하는 과정에서 통신에서 에러가 나는 경우가 종종 발생해서 그렇다고 한다. 실제 프로젝트와는 전혀 무관한 에러이다. ★★☆☆☆ 2020. 7. 28.
Unity) 프로젝트가 확장될 때 코드 설계 방법 프로젝트가 확장될 때 코드 설계 방법 프로젝트를 진행하게 되면 수정 변경 및 여러 가지 요구사항으로 인해서 확장이 되는 경우가 굉장히 잦다. 프로젝트가 확장될때 코드를 설계하는 방법을 많은 고민과 함께한다. 우연히 보게된 관련된 글을 읽고 정리 겸 개인 경험을 더해서 포스팅한다. 주요 키워드는 '재사용', '확장성', '수정이 용이'한 방법이다. 1. ScripterbleObject 사용하기 Unity에서는 변수를 사용하는 경우가 많은데 중복해서 사용하는 데이터는 ScriptableObject로 사용하는 것을 추천한다. 스크립 터블 오브젝트를 사용하게 되면 재사 용적인 이점과 함께 런타임 상황(플레이모드)에서 인스펙터 창에서 변수로 확인 가능하다. 2. 규모가 큰 MonoBehavior 분할하기 2018.. 2020. 7. 15.
Unity) Touch Event 2D / 3D 코드 처리 Touch Event 2D / 3D 코드 처리 터치 이벤트는 Update에서 사용하는 것을 권장한다. Update에서는 프레임당 한번을 실행하고 FixedUpdate에서는 물리 tick당 실행되서 프레임마다 차이가 발생이 되기때문에 입력에 대한 손실이 발생가능하다. 관련된 내용 : [링크] Check for User Input in FixedUpdate? Hi everyone! I'm new around these here parts! I've been doing some searches on the forums and I've read at least a couple of times that we should... forum.unity.com 유니티에서는 Touch 입력을 Editor와 Input를 플.. 2020. 7. 14.
Unity) 스크롤뷰 커스텀(가로, 세로 동시) 스크롤 뷰 커스텀(가로, 세로 동시) Unity에서 스크롤 뷰를 처리를 하다 보면 가로 스크롤도 되고 세로 스크롤도 되어야 하는 상황이 생긴다. 두 개 동시에 처리하기에는 까다롭다. 구글링 결과 커스텀 스크립트와 사용방법을 포스팅한다. 영상은 다음과 같다. 코드의 원리는 다음과같다. 하위 아이템으로 추가된 스크롤 뷰의 이벤트를 상위 스크롤 뷰에 이벤트를 다시 돌려주는 방식이다. using UnityEngine; using System.Collections; using UnityEngine.UI; using System; using UnityEngine.EventSystems; public class ScrollRectEx : ScrollRect { private bool routeToParent = fa.. 2020. 7. 1.
정리)Dev Weeks: 작업 효율을 높이기 위한 유니티 UI 제작 프로그래밍 패턴들 Dev Weeks: 작업 효율을 높이기 위한 유니티 UI 제작 프로그래밍 패턴들 네이티브 앱에서 사용되는 테마와 UI 패턴들을 유니티 UI에 구현하는 방법과, UI 프로그래밍과 UI 게임 오브젝트 제작 작업을 최대한 분리하는 방법, API 제공 전 목업 데이터를 구현하는 방법 등, 시행착오를 통해 얻은 유용한 유니티 UI 작업 워크플로우를 소개하는 영상을 정리한 내용이다. 모든 저작권은 Unity Korea에 있습니다. URL :https://www.youtube.com/watch?v=_jW_D2vF9J8 MVVM 패턴 -> 데이터 마이닝 (비선형 구조) ------------------------------------------------------------------------------------.. 2020. 6. 29.
Unity) txt 파일 생성 및 저장(I/O) txt 파일 생성 및 저장(I/O) 게임을 만들다 보면 파일 입출력( input / output )을 사용해야 할 경우가 종종 있다. 지금은 에디터 작업을 하다가 사용하게 되어서 이렇게 정리하게 되었다. using System.IO; string fullPth ="Assets/경로" if(false == File.Exists( fullPath )){ var file = File.CreateText( fullPath + ".txt"); file.Close(); } System을 사용하기 위해서 import 하고 해당 파일이 있는지 확인하고 없는경우에 파일을 생성하도록 했다. StreamWriter sw = new StreamWriter( fullPath ); sw.WriteLine("저장된 데이터"); s.. 2020. 6. 16.
반응형