본문 바로가기
반응형

개발/Unity352

문제해결)Unity)UnityException: ~ can only be called from the main thread.Constructors and field initializers will be executed from the loading thread when loading a scene.Don't use this function in the constructor or field initializers, inst.. ~ can only be called from the main thread.Constructors and field initializers will be executed from the loading thread when loading a scene.Don't use this function in the constructor or field initializers, inst.. 해당이슈는 Unity에서 Main Thread가 아닌곳에서 UnityEngine의 기능을 호출할때 발생하는 이슈이다. 여러상황에서 발생이 가능한데. 외부 라이브러리 Unity 사이에서 발생하는 경우가 종종있다. Unity 에서 Main Thread를 보장하는곳에서 호출하려면 간단하게 Mono Update에서 호출하거나 Coroti.. 2022. 10. 3.
문제해결)Exception: Unable to install additional SDK platform. Please run the SDK Manager manually to make sure you have the latest set of tools and the required platforms installed. C:\Program Files\Unity\Hub\Editor\2020.3.39f1\Editor\Data\Playback.. Exception: Unable to install additional SDK platform. Please run the SDK Manager manually to make sure you have the latest set of tools and the required platforms installed. C:\Program Files\Unity\Hub\Editor\2020.3.39f1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\tools\bin\sdkmanager.bat "platforms;android-31", exit code 1 Powershell non elevated output: Unity Version을 변경하면서 해당 이슈가 발생했다. 해당이슈는.. 2022. 9. 27.
문제해결)An error occurred while resolving packages: Project has invalid dependencies: com.unity.uiextensions: Package [com.unity.uiextensions@2.2.7] cannot be foundA re-import of the project may be required to fix the issue or a manual modifica.. An error occurred while resolving packages: Project has invalid dependencies: com.unity.uiextensions: Package [com.unity.uiextensions@2.2.7] cannot be foundA re-import of the project may be required to fix the issue or a manual modification of ~/Packages/manifest.json file. 해당 이슈는 패키지가 이미 포함되어있는 상황에서 패키지 매니저에 정의되어있는것을 불러오는 과정에서 생기는 이슈이다. 해당 패키지와 같은 패키지를 Assets 내부에서 제거하고 난 다음에 다시 reimport를 해주면 해결.. 2022. 9. 27.
코드)Unity) 플랫폼별 로컬 파일 저장 경로 플랫폼별 로컬 파일 저장 경로 및 저장 플랫폼 별로 로컬 파일 경로를 설정하는 코드이다. 간단하게 참고하면 되는데 저장되는 위치가 플랫폼별로 다르기 때문에 구분이 필요하다. void LoadLocalizedText (string fileName) { localizedTextDictionary = new Dictionary (); string dataAsJson; #if UNITY_EDITOR string filePath = Path.Combine (Application.streamingAssetsPath, fileName); #elif UNITY_IOS string filePath = Path.Combine (Application.persistentDataPath, fileName); #elif UNIT.. 2022. 9. 25.
삽질)Unity)TextMeshPro 터치 안먹히는 현상 TextMeshPro 터치 안먹히는 현상 TextMeshPro도 RayCast Raget을 설정할 수 있다는 걸 깜빡하고 삽질하다가 이렇게 포스팅하게 되었다. Unity에서는 Raycast Target이 체크가 되면 가장 맨 위에 있는 오브젝트에 이벤트를 전달하게된다. Extra Settings 의 Raycast Target을 체크해제 하면 된다. Raycast Target 이 TextMesh Pro GameObject를 레이캐스트 대상으로 만들려면 이 옵션을 활성화합니다. 이 옵션을 비활성화하면 커서가 상호 작용하는 대상을 결정할 때 UI가 이 TextMesh Pro 게임 오브젝트를 무시합니다. ★☆☆☆☆ 2022. 9. 20.
Unity) TextMeshPro Font 추가하기(TMP : 한글폰트 적용) TextMeshPro Font 추가하기(TMP : 한글폰트 적용)텍스트 매쉬 프로를 처음에 설치하고 난 이후에 적용하면 기본적으로는 한글폰트가 미적용되어있다.한글이 포함된 폰트를 추가해서 폰트와 매칭되게 만들어야 한다. 사용할 폰트를 다운받고 Font Asset Creator에서 생성한다. [Window]-[TextMeshPro]-[Font Asset Creator] 를 들어가서 폰트 . TT파일을  선택한다.Source Font File 에서 폰트를 선택하고 폰트의 Atlas의 사이즈와 Character Set을 설정한다.여기서는 '영어, 특수문자, 한글'을 포함해서 생성한다.Character Sequence 에서는 포함할 문자의 유니코드(Unicode)를 정의한다.  .. 2022. 9. 20.
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.
반응형