본문 바로가기
반응형

개발880

Unity) Camera 최적화 및 컬링에 대한 이해 Camera 최적화 및 컬링에 대한 이해 Unity 라이브에서 이야기한 내용을 순서대로 정리한 포스팅이다. 원본 Unity Korea 라이브 링크 : [링크] 최적화의 기본은 최대한 많은것을 안하면서 최대한의 퍼포먼스를 찾는 과정이다. Frustum Culling 카메라의 뷰포트의 끝을 기준으로 끊어버리는 것( + 포그로 추가) Spatial Partition (Octree/ Quadtree) 카메라를 처리하기위해서 공간을 분할하는 과정 Occlustion Culling 가려진 오브젝트는 그리지 않음 in door scene에서 오큘루젼 컬링을 많이 사용한다. (door로 인해서 뷰포트에 미포함되어있는 항목에 대해서 처리하지 않음) out door scene Static 옆에 항목을 클릭하게되면 해당 부.. 2022. 9. 14.
Tip) .APK Sign Key 확인방법 .APK Sign Key 확인방법 .APK가 어떤 Key로 Sign 됬는지 확인하는 방법중 keytool을 사용해서 확인하는 방법을 포스팅한다. Keytool은 키 및 인증서 관리 유틸리티로 디지털 서명을 사용하여 공개키/ 비 공개키로 인증서를 관리하는 툴이다. 사용방법은 다음과 같다. keytool -list -printcert -jarfile 확인할.apk 서명된 APK를 입력하면 Signing 정보를 확인할 수 있다. Oracle Keytool : [링크] keytool-Key and Certificate Management Tool KU or KeyUsage usage(,usage)*, usage can be one of digitalSignature, nonRepudiation (contentC.. 2022. 9. 14.
Unity) DontdestroyOnLoad 에 포함된 항목 찾기 DontdestroyOnLoad 에 포함된 항목 찾기 여러가지 방법이 있는데 간단하게 정리한다. 1. Dontdestory 하는걸 래핑 클래스로 감싸서 관리하는 방법 public static class ObjectExtension { private static List savedObjects = new List(); public static void DontDestroyOnLoad(this Object obj){ savedObjects.Add(obj); Object.DontDestroyOnLoad(obj); } public static void Destory(this Object obj){ savedObjects.Remove(obj); Destory(obj); } public static List Get.. 2022. 9. 14.
문제해결)Unity)패키지 매니저에서 찾지 못하는 경우(Search not found in Packagemanager) 패키지 매니저에서 찾지 못하는 경우 패키지 매니저에서 검색이 안되는 경우가 발생해서 해결한 방법을 포스팅한다 [Edit]-[Project Setting]-[Package Manager] 항목으로 이동한다. 여기에서 Enable Preivew Packages를 체크해준다. 체크하고 검색하면 다시 정상적으로 나오는것을 확인할 수 있다. Advance의 옵션 설명은 다음과 같다. Show Dependencies 세부 정보 뷰에 각 패키지의 종속성을 표시합니다. Enable Preview Packages 패키지 리스트에 프리뷰 패키지를 포함합니다. 참고: 프리뷰 패키지는 Unity에서 사용할 수 있다고 검증되지 않았으며 불안정할 수 있습니다. 또한 프로덕션 환경에서 지원되지 않습니다. Unity Package .. 2022. 9. 13.
개발일지) 피크로스(Picross), 노노그램(Nonograms) 만들기 -2 피크로스(Picross), 노노그램(Nonograms) 만들기 -2 데이터를 만드는 과정에서 수정이 용이하지 않아서 Draw Rect에서 EditorGUI.Toggle 으로 변경했다. Texture를 기반으로 컬러값을 추출 -> 데이터 과정에서 나중에 필요하면 컬러값으로도 추가해도될듯하다. 데이터가 준비가되면 실질적으로 게임을 진행할데이터를 만든다. 데이터는 가로세로를 읽으면서 연속된 데이터가 있는지 판단하고 없으면 다음으로 넘어간다. 스택과 큐를 사용해서 데이터를 처리했다. 이후에는 실제 데이터가 있느지 판단하는 과정을 거친다. TileMap으로 작업을 진행했고 터치 이벤트로 해당 타일의 조건을 판단했고 기본적으로 게임진행에 필요한 처리를 완료했다. ★☆☆☆☆ 2022. 9. 11.
Unity) Insepctor Enum 이름 변경 Insepctor Enum 이름 변경 Inspector에서 Enum을 좀더 직관적인 이름으로 변경할수있는 Attribute이다. 종종 사용하면 좋을것 같다. 간단하게 enum에 [InsepctorName]이라는 Attribute를 추가하면 된다. using UnityEngine; public enum ModelImporterIndexFormat { Auto = 0, [InspectorName("16 bits")] UInt16 = 1, [InspectorName("32 bits")] UInt32 = 2, } Unity InsepctorName : [링크] Unity - Scripting API: InspectorNameAttribute Success! Thank you for helping us impro.. 2022. 9. 7.
개발관련) 다크 패턴 (소비유도상술, Dark Commercial Pattern) 다크 패턴 (소비유도상술, Dark Commercial Pattern) 다크 패턴이라는건 악의적으로 소비자에게 특정한 행위를 유도하기 위한 여러가지 설계나 디자인을 통칭하는 표현이다. 예시로 구매 사이트에서 '마감 임박'이라던지 단 한정수량이라는 표기를 해서 구매유도를 하고 이후에도 같은 상품을 파는 행위를 말한다. ※ 해당 예시들은 언제든지 바뀔수 있다는 것을 참고하고 의미만 이해하면 좋겠습니다. 예시로 인터파크의 최저 항공권 특가로 810,700이 최적가라고 하지만 막상 사이트의 가장 최저요금은 101만원이었다. 대체적으로 제한된 정보를 제공하는 제공 측에서 악의적인 의도를 가지면 소비자는 이를 해결하거나 간파하기 어렵다. 회원 탈퇴가 어렵게 만든것, 혹은 기본 설정이 마케팅 동의, 자동 정기결제, .. 2022. 9. 7.
Tip)Visual Studio)Plugin - Rainbow Braces Rainbow Braces Visual Studio MaketPlace에서 설치가 가능한 플러그인으로 간단하게 괄호구분을 컬러그룹으로 구분이 용이한 확장 플러그인이다. 간단하게 설치만해도 이전과 다르게 구분이 된다. 간단하게 사용에 대한 토글은 메뉴에서 선택이 가능하다. [편집] - [고급]-[Toggle Rainbow Brace] RainbowBraces : [링크] Rainbow Braces - Visual Studio Marketplace Extension for Visual Studio - Colorizes matching brace pairs to make it easy to identify them and their scope. Works for curly brackets, parenthese.. 2022. 9. 7.
문제해결)You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all You are trying to create a MonoBehaviour using the 'new' keyword. This is not allowed. MonoBehaviours can only be added using AddComponent(). Alternatively, your script can inherit from ScriptableObject or no base class at all 해당이슈는 MonoBehaviour를 상속받는 클래스를 new 키워드로 생성할 경우에 발생하는 Warning 이다. 해결방법은 다음과 같다. 1. MonoBehaviour를 제거하는 방법 (구조의 변경) 2. new 키워드가 아닌 AddComponent를 통해서 생성하는 방법 ★☆☆☆☆ 2022. 9. 7.
Unity)문제해결)ArgumentException: You can only call GUI functions from inside OnGUI. ArgumentException: You can only call GUI functions from inside OnGUI. 해당이슈는 OnGUI에서만 호출이되는 코드를 다른 코드에서 호출했을때 발생한 이슈이다. 본인은 Awake()에서 GUI.skin.GetStyle을 가져와서 캐쉬처리를 하는 코드를 처리해서 해당 이슈가 발생했었다. 간단하게 OnGUI에서 처리해주면 된다, Unity IMGUI : [링크] ★☆☆☆☆ 2022. 9. 1.
Unity) Network Connection Check(인터넷 연결 확인 / Wi-fi 연결 ) Network Connection Check(인터넷 연결 확인 / Wi-fi 연결 ) Unity 에서 제공하는 internetReachability값을 활용해서 간단하게 체크가 가능하다. 옵션으로는 다음과 같다. 속성 설명 NotReachable 연결불가 ReachableViaCarrierDataNetwork 셀룰러연결 (이동 통신사 네트워크) ReachableViaLocalAreaNetwork Wi-Fi 연결 //Attach this script to a GameObject //This script checks the device’s ability to reach the internet and outputs it to the console window using UnityEngine; public cl.. 2022. 8. 31.
Unity) SerializeField / SerializeReference SerializeField / SerializeReference Unity 의 Field 항목를 직렬화 할때는 SerializeField를 사용한다. 직렬화 가능한 항목은 다음과 같다. UnityEngine.Object를 상속하는 클래스 ( GameObject, Compoent, MonoBehaviour, Texture 2D, AnimationClip 등등) int, string, float, bool 같은 기본 원시 데이터 유형 Vector2, Vector3, Vector4, Quaternion,Matrix4x4, Color, Rect, LayerMask 등 기본 제공 유형 Enum, Struct 직렬화 가능한 배열, 목록, System.Serialize가 명시된 Class .. 2022. 8. 30.
기본기) 형식 매개 변수에 대한 제약 조건 where T : struct 형식 매개 변수에 대한 제약 조건 where T : struct where T: struct의 제약 조건은 다음과 같은 의미를 가진다.T는 struct(구조체), enum(열거형), 또는 기본 데이터 형식(int, float, bool 등) 값 형식으로 정의된 타입만 가능하다.값 형식은 메모리에 직접 데이터를 저장하고, 힙이 아니라 스택에 저장되는것이 일반적이다.  특징설명참조 형식 사용 불가 where T : struct 제약 조건을 사용하면, 해당 형식 매개 변수를 참조 형식(예 : class, array, string, 또는 사용자 정의 참조 형식)을 사용할 수 없다.T는 항상 값 형식이어야 하며 null을 할당 할 수 없다,값 형식의 기본 제약값 형식의 경우 항상 기본 생성자가 보장되므로, 기본값.. 2022. 8. 25.
Unity) Preset Manager (기본 값 설정 : 프리셋) Preset Manager  (기본 값 설정 : 프리셋) Preset Manager는 는 프로젝트 설정  게임 개체에 구성 요소를 추가하거나 프로젝트에 새 자산을 추가할 때 기본 속성(Default)으로 생성할수 있도록 Preset을 만들어서 관리하는 Manager 기능이다.정의한 기본 사전 설정은 Unity의 기본 설정을 재정의 된다.  재정의하는 방법은 Preset을 만들어서 Preset Manager에 미리 등록시켜두고 기본값(Enable)으로 활성화 시키면 새 자산이 추가될때 해당 값으로 적용된다.  Texture를 예시로 들면 다음과 같다.등록할 Preset의 Inspector 항목에서 Preset을 저장한다.저장한 Preset을 Preset Manager에서 등록한다.   이렇게 등록하게되면 .. 2022. 8. 24.
Unity) ScriptableObject Sington (instance) ScriptableObject Sington (instance) ScriptableObject를 Sington 형태로 사용하는 간략한 코드 정리이다. Lazy를 사용해도 되지만 없는 경우에 Load Asset 을 통해서 자동 생성하는 코드이다. private class ScriptableSingleton : ScriptableObject { static ScriptableSingleton _instance; public static ScriptableSingleton Instance => _instance ?? (_instance = LoadAsset()); private static ScriptableSingleton LoadAsset() { var path = GetAssetPath(); var as.. 2022. 8. 24.
반응형