본문 바로가기
반응형

개발/Unity354

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) 이미지 픽셀 (Image Pixel) 구분하기 이미지 픽셀 (Image 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) 스크롤 뷰 커스텀 ScrollView Custom (가로, 세로 동시) 스크롤 뷰 커스텀 ScrollView Custom (가로, 세로 동시)Unity에서 스크롤 뷰를 처리를 하다 보면  가로 스크롤도 되고 세로 스크롤도 되어야 하는 상황이 생긴다.두 개 동시에 처리하기에는 까다롭다.구글링 결과 커스텀 스크립트와 사용방법을 포스팅한다.영상은 다음과 같다. 코드의 원리는 다음과같다. 하위 아이템으로 추가된 스크롤 뷰의 이벤트를 상위 스크롤 뷰에 이벤트를 다시 돌려주는 방식이다.using UnityEngine;using System.Collections;using UnityEngine.UI;using System;using UnityEngine.EventSystems; public class ScrollRectEx : ScrollRect { private bool rou.. 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.
소식)Unity 2019 LTS Unity 2019 LTS가 출시되었다. 유니티 LTS(Long Term Support)의 약자로 호환을 위해서 장기적으로 지원을 할 예정이라는 말로 대체적으로 상용서비스 버전은 LTS를 많이 사용한다. 년마다 새롭게 업데이트를 하는 Unity 지만 이번에는 좀 늦게 나온 감이 있다. 하이라이트 영상은 다음과 같다. URL : youtu.be/x6jx_qPm6rY 간략하게 설명하면 에디터 창이 개선되고, 프로파일러가 더 강화됐으며 많은 비주얼 라이징을 해야 하는 요소들을 외부에서 만들어서 임포트 한 과정들이 합쳐졌다. 2D 라이트 및 본, 애니메이션, 타일 맵 시스템이 추가됐고 (그전에 비해서 개선 및 추가) 쉐이더 파이프라인 라던지 HDRP , Visual Effect Graph에 대한 요소들이 추가되.. 2020. 6. 14.
Unity) 오브젝트 바라보게하기(Lookat) 오브젝트 바라보게하기(Lookat) 오브젝트가 특정 타겟을 기준으로 바라보게 하는 코드이다.회전방향을 특정 타겟으로 향하게 한다. Vector3 relativePos = target.position - transform.position;// the second argument, upwards, defaults to Vector3.upQuaternion rotation = Quaternion.LookRotation(relativePos, Vector3.up);transform.rotation = rotation;  혹은 Transform의 Lookat 코드를 사용해도된다. using UnityEngine;public class LookAtTarget : MonoBehaviour{ // 바라볼 타겟의 .. 2020. 6. 11.
Unity) 워크플로우 속도 향상을 위한 기능 5가지(2019 v) 워크플로우 속도 향상을 위한 기능 5가지(2019 v) 워크플로우 속도 향상을 위한 5가지 기능을 발췌했다. 1) 플레이 모드(Enter Play Mode) 2) 에셋 임포트(Asset Import Pipeline) 3) 에셋 관리(Addressable) 4) 디바이스 프리뷰(Device Simulator) 5) 패치 빌드(Script Only Patching) Unity Korea에서 공개한 기능으로 'Dev Week : 워크플로 속도 향상을 위한 기능 소개'를 편집한 포스팅입니다. 원본 URL :https://www.youtube.com/watch?v=Kel7NIP2AOg ------------------------------------------------------------------------.. 2020. 6. 1.
반응형