본문 바로가기
반응형

개발/Unity361

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.
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.
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.
문제해결)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.
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.
Unity) Insepctor Custom (조건 처리 / 숨기기 / 비활성화) Insepctor Custom (조건 처리 / 숨기기 / 비활성화) Insepctor의 bool 값을 통해서 활성화되는 Field를 만드는것을 찾다가 알게되어서 포스팅하게됬다. Is Use라는 필드를 활성화화면 Show Test라는 필드가 나오는것을 테스트했다. 불필요한 항목은 미노출 시키게 되면 사용하기도 편하고 사이드 이슈도 덜 생긴다. 기본값을 셋팅해준다던지 그런것도 따로 안해도된다. 정보를 더 노출하면 복잡성만 추가될 뿐이다. ※참고로 Array 형태나 Seralize Class 는 모두 정상동작하지 않고 단일 필드에 대해서만 가능하다. 그 상황이 필요하면 Editor Class를 상속받아서 따로 구현필요함 사용방법과 예시는 다음과 같다. public bool showHideList = false.. 2022. 8. 22.
Unity)Attribute) Serialized field Update/Change Callback(Editor 값 변경시 호출) Serialized field Update/Change Callback(Editor 값 변경시 호출) Serialized Field를 변경하면 자동으로 해당 값이 변경되는것을 제약하고 싶었다. 이번에 작업하는 코드에서 Size라는 항목을 변경하면 m_data라는 Bool 배열을 자동으로 처리하는 코드이다. OnChangedCall( 호출할 메소드 ) 형태로 가능하다. [OnChangedCall("Resize")] [SerializeField, Range(3, 20)] private int Size; public void Resize() { m_data = new bool[size * size]; } using System.Linq; using UnityEngine; using UnityEditor; pu.. 2022. 8. 17.
Unity) 이벤트 함수의 실행순서(Script Life Cycle) 이벤트 함수의 실행순서(Script Life Cycle) Unity 기본적인 이벤트의 실행 순서이다. 기본적인 스크립트의 라이프 사이클인데 다음과 같다. 각각의 차이와 언제 어떻게 동작하는지 알고있어야 개발하는대 수월하고 절차적으로 실행이 가능하다. 예를들어 Awake와 Start의 차이점이라던지 종료시점의 OnDisable 과 OnDestory 차이점과 순서,Update, Fixedupdate의 차이 등등 그 외로 Unity가 다른 MonoBehaviour 클래스의 이벤트 함수를 호출하는 순서를 지정하는 방법도 존재한다. Uniy 이벤트 함수의 실행 순서 : [링크] 이벤트 함수의 실행 순서 - Unity 매뉴얼 Unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행됩니다... 2022. 8. 11.
문제해결)Unity)UnityException: Texture 'image2' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings. UnityException: Texture 'image2' is not readable, the texture memory can not be accessed from scripts. You can make the texture readable in the Texture Import Settings.Texture2D.GetPixels 를 하는 과정에서 발생한 이슈이다.  Texture의 Insepctor 옵션을 보면 Advanced 하위 옵션에 Read / Write  - Enabled 활성화를 해주면 읽을수 있다.기본값으로는 비활성화 상태이기 때문에 사용하는 과정에서는 체크해줘야 한다.Unity 설명은 다음과 같다.옵션설명읽기/쓰기 가능Texture2D.SetPixels , Texture2D.GetPi.. 2022. 8. 2.
Unity)하이어라키 커스텀(Hierarchy Custom) 하이어라키 커스텀(Hierarchy Custom) 여러 사람이 작업하다보면 Hierarchy의 Name으로는 구분이 힘들 경우가 종종 생긴다. Nested Prefabs과 RunTime 과정에서 Instantiate Prefab 등등, 로직에 의해서 변경되는 Hierarchy등등 여러가지 경우로 인해서 점점 복잡해진다. 어떤 GameObject가 무엇을 포함하고있는지 구분하기 위해서 방법을 찾다가 Hierarchy Custom을 하는 것을 알게되어서 이것저것 적용해보았다. using UnityEditor; using UnityEngine; using System.Collections.Generic; /// /// Custom Hierarchy - 프로젝트 및 RunTime 상황에서 변동을 확인하기 위해서.. 2022. 8. 1.
반응형