블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2862)
Unity3D (899)
Programming (479)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (192)
협업 (65)
3DS Max (3)
Game (12)
Utility (142)
Etc (99)
Link (34)
Portfolio (19)
Subject (90)
iOS,OSX (53)
Android (16)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (20)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

Unity 2021.3.37f1

Obfuscator 3.12.0

----

 

[추가] 2024-04-15

Android - Google Play Asset Delivery로 Build 시,

nameTranslation.txt 파일을 상대경로(파일명만)로 지정했을 때 제대로 생성하지 못하는 문제가 있어서 우회하도록 수정함.

BuildReport에서 주는 빌드파일 경로를 쓰지 않고, string.Format(@"{0}/..", Application.dataPath) 로 프로젝트 패스를 쓰도록 변경함.

해당 방식을 쓰기위해 Android 일 때만, Obfuscator의 OptionsManager.cs의 LoadAssetAtPath 함수를 아래와 같이 일부 수정했다.

using System.Collections.Generic;
using UnityEngine;
using UnityEditor;

namespace Beebyte.Obfuscator
{
    public class OptionsManager
    {
        ....
       
        private static Options LoadAssetAtPath(string path)
        {
            // [Android] nameTranslationFile Path 변경
            if (EditorUserBuildSettings.activeBuildTarget == BuildTarget.Android)
            {
                // Custom
                Options o = AssetDatabase.LoadAssetAtPath<Options>(path);
                if (o == null)
                {
                    return null;
                }

                // 옵션값 덮어쓰지 않도록 Clone해서 사용.
                var clone_o = Object.Instantiate(o);

                /// 현재 프로젝트 절대 경로(Application.dataPath/../)로 수정 반환
                // 파일명(Default:nameTranslation.txt)만 추출해서 저장
                string strnameTranslation = System.IO.Path.GetFileName(clone_o.nameTranslationFile);
                // 현재 프로젝트 Path 적용. 절대경로값 지정
                clone_o.nameTranslationFile = string.Format(@"{0}/../{1}", Application.dataPath, strnameTranslation);
                return clone_o;
            }
            // [iOS] 기존 방식
            else
            {
                // Original
                return AssetDatabase.LoadAssetAtPath<Options>(path);
            }
        }
        
        ....
    }
}

 

 

----

Obfuscator에 난독화 기능을 쓸 때,

난독화 전/후 Naming 매칭 리스트를 뽑아주는 옵션이 있다.(아래 스샷 참조)

ObfuscatorOptions.asset

 

 

체크하면 기본 파일명이 nameTranslation.txt인데 빌드 할 때마다 덮어버리니 관리가 안돼서 빌드마다 별도로 만들어질 수 있도록 PostProcess로 파일명을 Rename 하도록 처리했다.

 

아래 소스를 프로젝트에 추가하면,

[Android] namteTranslation.txt 파일을 빌드 파일명에 매칭해서 자동으로 변경해준다.

ex) 빌드 파일명 : abc_v1.0.0.apk

      변경되는 파일명 : abc_v1.0.0.apk_ namteTranslation.txt

 

[iOS] iOS는 빌드 시점에 파일명이 지정되는게 아니라서 별도의 조합으로 진행되도록 했다.

          ex) abc_live_1.0.0(100)_20231206_183400_iOS_nameTranslation.txt

 

 

using System.IO;
using UnityEngine;
using UnityEditor;
using UnityEditor.Build;
using UnityEditor.Build.Reporting;
using UnityEditor.Callbacks;
using System;

/// <summary>
/// [PostProcess] Obfuscator : Rename nameTranslation.txt -> {BuildFileName.ext}_nameTranslation.txt
/// </summary>
public sealed class PostProcessBuild_Obfuscator_NameTransition_Renamer : IPreprocessBuildWithReport, IPostprocessBuildWithReport
{
    public int callbackOrder => 0;

    private static readonly string m_strNameTranslation_Src = "nameTranslation";    // Obfuscator 기본값
    private static readonly string m_strExt_txt = "txt";


    public void OnPreprocessBuild(BuildReport report)
    {
        // 1. ./BUILD_PATH/nameTranslation.txt 파일 유무 체크
        // 2. 있으면 - Delete(Clear)

        string strBuildPath = string.Empty;
        string strNameTranslation_txt_Src = string.Empty;

        switch (report.summary.platform)
        {
            case BuildTarget.Android:
                {
                    // 현재 프로젝트 Path 적용(절대경로 지정)
                    // [Obfuscator-OptionsManager.cs:line 140] 연관됨
                    strBuildPath = string.Format(@"{0}/..", Application.dataPath);
                    strNameTranslation_txt_Src = string.Format(@"{0}/{1}.{2}", strBuildPath, m_strNameTranslation_Src, m_strExt_txt);
                }
                break;

            case BuildTarget.iOS:
                {
                    strBuildPath = Path.GetDirectoryName(report.summary.outputPath);
                    strNameTranslation_txt_Src = string.Format(@"{0}/{1}.{2}", strBuildPath, m_strNameTranslation_Src, m_strExt_txt);
                }
                break;
        }

        if (true == File.Exists(strNameTranslation_txt_Src))
        {
            File.Delete(strNameTranslation_txt_Src);
            Debug.LogWarningFormat("[Delete] {0}", strNameTranslation_txt_Src);
        }
    }

    public void OnPostprocessBuild(BuildReport report)
    {
        Debug.LogWarningFormat("[OnPostprocessBuild][platform] {0} [pathToBuildProject] {1}", report.summary.platform, report.summary.outputPath);

        string strBuildPath = string.Empty;                 // 빌드 패스
        string strBuildFileName_with_Ext = string.Empty;    // 파일네임.확장자
        string strExt = string.Empty;                       // 확장자(.apk/.aab/.ipa)
        string strNameTranslation_txt_Src = string.Empty;   // [Src] nameTranslation.txt
        string strNameTranslation_txt_Dest = string.Empty;  // [Dest] nameTranslation.txt

        string strLunarConsole = "";
        if (true == LunarConsolePluginInternal.LunarConsoleConfig.consoleEnabled)
        {
            strLunarConsole = string.Format("_LunarConsole");
        }

        switch (report.summary.platform)
        {
            case BuildTarget.Android:
                {
                    // 현재 프로젝트 Path 적용(절대경로 지정)
                    // [Obfuscator-OptionsManager.cs:line 140] 연관됨
                    strBuildPath = string.Format(@"{0}/..", Application.dataPath);
                    //strBuildPath = Path.GetDirectoryName(report.summary.outputPath);
                    strBuildFileName_with_Ext = Path.GetFileName(report.summary.outputPath);
                    strExt = Path.GetExtension(report.summary.outputPath);  // .apk / .aab
                    strNameTranslation_txt_Src = string.Format(@"{0}/{1}.{2}", strBuildPath, m_strNameTranslation_Src, m_strExt_txt);

                    string strProductName = string.Format("{0}", Application.productName);
                    string strServer = string.Format("{0}", ClientSettings.ServerType.ToString());
                    string strVersion = string.Format("{0}", Application.version);
                    string strBundleVersionCode = string.Format("{0}", PlayerSettings.Android.bundleVersionCode);
                    string strDateTime = string.Format("{0}", DateTime.Now.ToString("yyyyMMdd_HHmmss", System.Globalization.CultureInfo.InvariantCulture));
                    string strPlatform = string.Format("{0}", report.summary.platform);

                    strNameTranslation_txt_Dest = string.Format(@"{0}/{1}_{2}_{3}({4})_{5}{6}_{7}{8}_{9}.{10}",
                                                                    strBuildPath,               // {0}
                                                                    strProductName,             // {1}
                                                                    strServer,                  // {2}
                                                                    strVersion,                 // {3}
                                                                    strBundleVersionCode,       // {4}
                                                                    strDateTime,                // {5}
                                                                    strExt,                     // {6}
                                                                    strPlatform,                // {7}
                                                                    strLunarConsole,            // {8}
                                                                    m_strNameTranslation_Src,   // {9}
                                                                    m_strExt_txt                // {10}
                                                                    );

                    #region OutputPath 기준 방식(Google Asset Delivery 대응 안됨)
                    //strBuildPath = Path.GetDirectoryName(report.summary.outputPath);
                    //strBuildFileName_with_Ext = Path.GetFileName(report.summary.outputPath);
                    //strNameTranslation_txt_Src = string.Format(@"{0}/{1}.{2}", strBuildPath, m_strNameTranslation_Src, m_strExt_txt);
                    //// Build File과 매칭하기 쉽도록
                    //// BuildFileName.ext_nameTranslation.txt 형태로 Dest 생성
                    //strNameTranslation_txt_Dest = string.Format("{0}/{1}_{2}.{3}", strBuildPath, strBuildFileName_with_Ext, m_strNameTranslation_Src, m_strExt_txt);
                    #endregion
                }
                break;

            case BuildTarget.iOS:
                {
                    /// iOS outputPath는 폴더만 있음(파일명.확장자는 없음.)
                    /// ex) [report.summary.outputPath] /User/{Users}/project_folder/build_folder

                    // ex) [Path.GetDirectoryName] /User/{Users}/project_folder
                    strBuildPath = Path.GetDirectoryName(report.summary.outputPath);
                    // ex) [Path.GetFileName] build_folder
                    strBuildFileName_with_Ext = Path.GetFileName(report.summary.outputPath);
                    //strExt = Path.GetExtension(report.summary.outputPath);  // .ipa   // empty
                    strExt = string.Format(".ipa"); // 직접 추가
                    strNameTranslation_txt_Src = string.Format(@"{0}/{1}.{2}", strBuildPath, m_strNameTranslation_Src, m_strExt_txt);

                    string strProductName = string.Format("{0}", Application.productName);
                    string strServer = string.Format("{0}", Anne.ClientSettings.ServerType.ToString());
                    string strVersion = string.Format("{0}", Application.version);
                    string strBuildNumber = string.Format("{0}", PlayerSettings.iOS.buildNumber);
                    string strDateTime = string.Format("{0}", DateTime.Now.ToString("yyyyMMdd_HHmmss", System.Globalization.CultureInfo.InvariantCulture));
                    string strPlatform = string.Format("{0}", report.summary.platform);

                    strNameTranslation_txt_Dest = string.Format(@"{0}/{1}_{2}_{3}({4})_{5}{6}_{7}{8}_{9}.{10}",
                                                                    strBuildPath,               // {0}
                                                                    strProductName,             // {1}
                                                                    strServer,                  // {2}
                                                                    strVersion,                 // {3}
                                                                    strBuildNumber,             // {4}
                                                                    strDateTime,                // {5}
                                                                    strExt,                     // {6}
                                                                    strPlatform,                // {7}
                                                                    strLunarConsole,            // {8}
                                                                    m_strNameTranslation_Src,   // {9}
                                                                    m_strExt_txt                // {10}
                                                                    );
                }
                break;
        }

        Debug.LogWarningFormat("[strNameTranslation_txt_Src] {0} [strNameTranslation_txt_Dest] {1}", strNameTranslation_txt_Src, strNameTranslation_txt_Dest);
        
        // 1. ./PROJECT_PATH/nameTranslation.txt 파일 유무 체크
        // 2. 있으면 - Rename : 해당 버전명 날짜/시간 파일명에 포함
        if (true == File.Exists(strNameTranslation_txt_Src))
        {
            File.Move(strNameTranslation_txt_Src, strNameTranslation_txt_Dest);
            Debug.LogWarningFormat("[Rename] {0} -> {1}", strNameTranslation_txt_Src, strNameTranslation_txt_Dest);
        }
        else
        {
            Debug.LogWarningFormat("[File Not Exists] {0}", strNameTranslation_txt_Src);
        }
    }
}
반응형
Posted by blueasa
, |

[링크] https://snack.planetarium.dev/kor/2020/02/thai-in-2562/

 

태국에서만 2562년으로 가는 소프트웨어?

 

snack.planetarium.dev

 

[참조] https://stackoverflow.com/questions/13903967/datetime-now-touniversaltime-has-the-wrong-year

 

DateTime.Now.ToUniversalTime() Has the Wrong Year

And Idea Why the Year appears as 2555? The culture of the site is Thai

stackoverflow.com

[참조] https://stackoverflow.com/questions/30393668/thai-year-2558-to-2015

 

Thai year 2558 to 2015

How to transform buddhist format of datetime into gregorian format (e.g. for Thailand 2558 → 2015)? using System.Text; using System.Threading; using System.Threading.Tasks; namespace

stackoverflow.com

 

반응형
Posted by blueasa
, |

[링크] https://allonsyit.tistory.com/90

 

[Jenkins] 젠킨스로 정기 작업 실행하기 / 스케줄 설정

# 젠킨스 스케줄 설정 1. 프로젝트 구성 -> 빌드 유발 -> Build periodically 선택 2. Schedule 에 크론 형식으로 시간 설정 0 8 * * * 입력 시 아래에 H 8 * * * 을 권장한다 0 8 * * * : 오전 8시 정각 H 8 * * * : 8시

allonsyit.tistory.com

 

반응형
Posted by blueasa
, |

Jenkins에서 두 브랜치를 매일 자동으로 Merge 하려고 찾아보면서 삽질하고 정리해 둠.

shall script로 해야되는건가 했는데 의외로 Jenkins에 관련 메뉴가 다 있는 것 같다.

Jenkins 메뉴로 git merge(소스 코드 관리-Merge before build 메뉴) 하고, git origin에 push(빌드 후 조치-Git Publisher 메뉴)까지 처리함.

 

----

 

To implement this task you can follow the below given steps.

  • Set your GitHub repo with credentials.

 

 

  • After that you have to set your branch name to merge. Go to source code management->Additional Behaviours->Merge before build.

 

 

  • Set your user name and user email. Go to source code management->Additional Behaviours->Custom user name and email.

 

 

Now your job is ready to merge your branch. You can also go through the below GitHub link to get more information.

https://github.com/nadim70/Newproject.git

 

GitHub - nadim70/Newproject

Contribute to nadim70/Newproject development by creating an account on GitHub.

github.com

 

 

[출처] https://www.edureka.co/community/68544/how-to-merge-two-branch-in-github-using-jenkins

 

How to merge two branch in GitHub using jenkins

Hi Everyone, I want to merge two branch in GitHub using jenkins. But I am not able to do this task. Can anyone help me to implement this task?

www.edureka.co

 

[참조] https://osc131.tistory.com/89

 

[jenkins] GIT Publisher

[jenkins] GIT Publisher 작성일자 : 2018년 10월 20일환경 : Jenkins 2.129, JDK 1.8.0_101목표 : Jenkins Build 작업 진행 후 Build에 사용됐던 GIT 버전을 Tags로 저장 ( 일종의 백업 ) * Jenkins - Git 연동 설정 및 GIT Plugin 설

osc131.tistory.com

 

반응형
Posted by blueasa
, |

[Error Log]

ERROR: Build step failed with exception
org.jenkinsci.plugins.scriptsecurity.scripts.UnapprovedUsageException: script not yet approved for use

----

To get around this, go to:
Jenkins -> Manage Jenkins -> In-process Script Approval

 

 

반응형
Posted by blueasa
, |

gradle을 Unity 2021 기본인 gradle plugin 4.0.1에서 gradle plugin 4.2.0으로 변경하고 나서

Unity Editor에서는 빌드가 잘되는데 이상하게 jenkins Android 에서만 빌드가 실패해서 삽질하면서 알아보니

jenkins를 Mac에 셋팅해뒀는데 gradle cache 폴더가 뭔가 꼬인 것 같다.

아래와 같은 Warning Log가 엄청나게 뜬다.

 

[Warning Log]

WARNING:/Users/{UserAccount}/.gradle/caches/transforms-2/files-2.1/ea30c3c071cd48c926311878c13eb08b/jetified-unity-classes.jar: D8: Expected stack map table for method with non-linear control flow.

 

그래서 아래 위치의 gradle cache 하위 있는 것들을 모두 삭제하고 새로 빌드를 실행해서 잘 돌아가는 것을 확인했다.

 

[Mac gradle cache 위치] /Users/{UserAccount}/.gradle/caches/

 

[참조] https://blueasa.tistory.com/2769

 

[플러그인] GoogleMobileAds 8.6.0(with Unity2021)

Unity 2021.3.32f1 GoogleMobileAds 8.6.0 Firebase SDK 11.6.0 ---- [추가] gradle을 Unity 2021 기본인 gradle plugin 4.0.1에서 gradle plugin 4.2.0으로 변경하고 나서 Unity Editor에서는 빌드가 잘되는데 이상하게 jenkins Android 에

blueasa.tistory.com

 

반응형
Posted by blueasa
, |

[추가2] 2024-04-08

Unity 2021.3.37f1

GoogleMobileAds 8.6.0

Firebase SDK 11.8.0

----

Unity 2021.3.37f1에서 기본 Gradle 버전이 Gradle 4.2.2로 버전업 되면서 별도로 Gradle 4.2.0을 다운받고 설정할 필요가 없어졌다.

그리고, Gradle 4.2.0에서 체크해야됐던 GoogleMobileAdsSettings 옵션을 더이상 체크 안해도 되게 됐다.

정리하자.

 

----

Unity 2021.3.32f1

GoogleMobileAds 8.6.0

Firebase SDK 11.6.0

----

 

[추가]

gradle을 Unity 2021 기본인 gradle plugin 4.0.1에서 gradle plugin 4.2.0으로 변경하고 나서

Unity Editor에서는 빌드가 잘되는데 이상하게 jenkins Android 에서만 빌드가 실패해서 삽질하면서 알아보니

jenkins를 Mac에 셋팅해뒀는데 gradle cache 폴더가 뭔가 꼬인 것 같다.

아래와 같은 Warning Log가 엄청나게 뜬다.

 

[Warning Log]

WARNING:/Users/{UserAccount}/.gradle/caches/transforms-2/files-2.1/ea30c3c071cd48c926311878c13eb08b/jetified-unity-classes.jar: D8: Expected stack map table for method with non-linear control flow.

 

그래서 아래 위치의 gradle cache 하위 있는 것들을 모두 삭제하고 새로 빌드를 실행해서 잘 돌아가는 것을 확인했다.

 

[Mac gradle cache 위치] /Users/{UserAccount}/.gradle/caches/

 

----

 

이번에 메모리 누수 이슈로 Unity 메이저 버전을 2022 -> 2021로 내렸는데,

GoogleMobileAds가 업데이트 돼서 기존 사용하던 8.4.1 -> 8.6.0으로 올리면서 Unity 버전관련해서 체크해야 될 사항들 간단히 정리해 둠.

 

일단 Unity 2022.3 이상은 상관 없었는데 2021.3으로 내려오면서 gradle 버전이 낮아지면서 처리할 문제가 생겼다.

아래 2가지 이슈를 수정하고 빌드 하자.

 

1) Unity 2021.3.32f1이 기본이 com.android.tools.build:gradle:4.0.1로 돼 있는데,

    GoogleMobileAds 8.6.0이 com.android.tools.build:gradle:4.2.0을 요구하고 있다.

    아래 링크의 내용을 참조해서 Base Gradle Templete에서 gradle plugin을 4.2.0으로 수정하고, gradle 6.7.1을 설치 및 연동하자.

 

   [설명 링크] https://developers.google.com/admob/unity/gradle?hl=ko#unity-integrated-builds

 

Android용 Gradle 업그레이드  |  Unity  |  Google for Developers

이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English Android용 Gradle 업그레이드 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. The Google Mobile Ad

developers.google.com

 

['gradle 6.7.1 bin' Download Link] https://gradle.org/next-steps/?version=6.7.1&format=bin

 

Gradle | Thank you for downloading Gradle!

Next steps after downloading Gradle

gradle.org

 

2) 그리고, GoogleMobileAds 셋팅 파일에 Unity 2022.1 이하 프로젝트 관련 옵션이 2개 추가 되어 있는데,

     Unity 2021.3을 쓰고 있어서 둘 다 체크해야 된다.

    아래 내용과 링크를 참조하자.

GoogleMobileAds 8.6.0 Settings

 

[참조 링크] https://github.com/googleads/googleads-mobile-unity/issues/2930

 

play-services-ads:22.4.0 issue · Issue #2930 · googleads/googleads-mobile-unity

[REQUIRED] Step 1: Describe your environment Unity version: 2021.3.30f1 Google Mobile Ads Unity plugin version: 8.5.2 Platform: Android - Unity Editor Mediation ad networks used, and their versions...

github.com

 

[잡담]

Google도 이제 대충 하는건지..

이번에 새로 추가된 class 중에 Utils가 있는데 다른데서도 많이 쓰는 이름인데 namespace를 지정 안해놔서 클래스 명 충돌이 나서 namespace GoogleMobileAds로 처리 했다.

 

 

----

[참고]

Firebase도 당장은 아니지만(현재 Firebase SDK 11.6.0 기준 Firebase Android BoM 32.3.1) 추후 버전에서 곧 Android Gradle Plugin 버전을 4.2.0으로 강제하게 될 것 같다.

Firebase Android BoM Release Notes

[링크] https://firebase.google.com/support/release-notes/android

 

Firebase Android SDK Release Notes

 

firebase.google.com

반응형
Posted by blueasa
, |

[Jinkins 빌드에러] ERROR: Timeout after 10 minutes

----

 

젠킨스 빌드를 실행하다보니 위와같은 에러가 뜬다.

프로젝트를 삭제하고 새로 받게 하려 했더니 용량이 커져서 10분이 넘어가나보다..

 

찾아보고 아래의 경로에 checkout과 clone 2개의 behaviours를 추가하고 timeout 시간을 60분으로 잡아줬다.

(0을 넣으면 무제한이 되지 않을까 싶었는데 1 이상의 값을 넣으라고 에러를 뱉어낸다)

 

- Jenkins 관리 > {My Project} > 구성 > 소스 코드 관리 > Git > (하단)Add > Advanced checkout behaviours > Timeout (in minutes) for checkout operation > 60(min)

- Jenkins 관리 > {My Project} > 구성 > 소스 코드 관리 > Git > (하단)Add > Advanced clone behaviours  > Timeout (in minutes) for clone and fetch operations > 60(min)

 

 

[참조] https://sonseungha.tistory.com/608

 

[Jenkins] Clone / Checkout Timeout 에러 처리

Jenkins에서 Git plugin을 사용하여, github의 프로젝트를 clone / check 시 timeout 에러가 발생하는 경우가 있다. Pull Request를 가져와 Jenkins에서 파이프라인을 수행하려할 때 아래와 같이 에러가 발생한다면

sonseungha.tistory.com

 

 

반응형
Posted by blueasa
, |

[2023-11-17 기준 사용 버전] Unity 2022.3.13f1

----

 

2022.3 LTS 버전이 나오고 2022.3.5까지 나온걸 보고 업데이트를 하고 사용했었는데,

2023-11-17 기준 최신 버전인 2023-11-17까지 빌드하고 테스트 해본 결과 아래와 같은 크리티컬한 크래쉬 이슈가 여전히 있었다.

안그래도 Unity 2021보다 Unity 2022가 무거워서 마음에 안들었는데 너무 크리티컬한 버그를 아직도 안고치고 있으니 갑갑함.

덕분에 스토어 올려진 앱이 크래시 증가로 경고까지 뜨고 있다.

 

  [크래쉬 이슈]

- 엔진 자체 메모리 누수로 인한 메모리 부족으로 느려지거나 크래쉬 남

- 파티클 관련 무한 재귀 관련 버그가 있는 건지 이펙트(파티클)가 터지면 간헐적으로 앱이 멈춤(이건 예상)

 

2022.3의 .3은 LTS라고 불리는 버전인데 2022.3 모든 버전에서 메모리 누수가 여전히 나고 있고,

몇일 전에 올라온 2022.3.13f1도 위 2개의 크래쉬 이슈가 이전보다는 줄었지만 여전히 나고 있다.

(유니티는 LTS의 정의를 잘못 생각하고 있는건 아닌지 의심스럽다.)

 

더이상 2022 버전 버그 수정을 기대하면서 쓰는건 뻘짓이라 판단하고 2022 버전을 완전히 버리기로 생각함.

현재 2023 버전은 LTS가 나오려면 멀었기 때문에 2021.3으로 엔진 메이저 버전을 다운그레이드 하고 앱 업데이트를 완료 했다.

 

테스트 상에서는 2022에 있던 크래쉬 이슈가 2021에선 나오지 않는걸 확인했다.

2021.3 버전을 쓰다가 2023.3으로 바로 넘어가야 될 것 같다.

 

P.s. 오늘 유니티 뉴스 보니 버전 레벨링을 개편한다면서 2023을 Unity 6으로 바꾸고 앞으로 버전으로 다시 돌아간다고 함.

       매년 업데이트 하기 힘들었나벼..그래서 출시하면 안되는 버전인 Unity 2022가 나오게 된건 아닌지 의심스럽다

 

[결론]

Unity 2022는 쓰레기니 쓰지맙시다.

Unity 2021 쓰세요~

 

[2022.3 Memory Leak 참조 링크]

https://forum.unity.com/threads/strange-memory-leak-on-2022-3-x.1460224/

 

Question - Strange Memory leak on 2022.3.x

Hi all, So this is an odd one. My game when run on 2021.3, memory sits around 1.3GB on launch. However, ive had reports since making changes over the...

forum.unity.com

https://forum.unity.com/threads/rthandles-api-introduced-catastrophic-memory-leak-bug-in-2022-3-8.1486035/

 

Bug - RTHandles API introduced catastrophic memory leak bug in 2022.3.8

Hi all, It seems there was a very large memory leak bug introduced in 2022.3.8 (on my PC it went as far as filling 32GB RAM and reserving a 32GB page...

forum.unity.com

 

반응형
Posted by blueasa
, |

[링크] https://learnandcreate.tistory.com/642

 

유니티에서 패키지를 기본값으로 재설정하기(reset pacakges to defaults)

유니티에서 패키지를 기본값으로 재설정하기(reset pacakges to defaults) 패키지를 기본값으로 재설정하면 프로젝트에서 사용자가 설치한 모든 패키지들을 제거하고 기본값으로 초기화합니다. 이 작

learnandcreate.tistory.com

 

반응형
Posted by blueasa
, |