{!See https://docs.google.com/document/d/1takg_GmIBBKKTj-GHZCwzxohpQz7Bhekivkk72kYMtE/edit for reference implementation of OneTrust, dataLayer and GTM} {!OneTrust Cookies Consent} {!OneTrust Cookies Consent end} {!dataLayer initialization push} {!dataLayer initialization push end} {!Google Tag Manager} {!Google Tag Manager end} 재컴파일 중 빌드 | Addressables | 1.21.17
docs.unity3d.com
"{0}"의 검색 결과

    목차 표시/숨기기

    재컴파일 중 빌드

    도메인 리로드를 트리거하는 사전 빌드 단계가 있는 경우, 도메인 리로드가 완료될 때까지 어드레서블 빌드 자체가 시작되지 않도록 주의해야 합니다.

    PlayerSettings.SetScriptingDefineSymbolsForGroup으로 스크립팅 정의 기호를 설정하거나 EditorUserBuildSettings.SwitchActiveBuildTarget로 활성 빌드 타겟을 전환하는 등의 메서드를 사용하면 스크립트가 재컴파일 및 리로드하도록 트리거됩니다. Unity 에디터 코드 실행은 도메인이 리 로드되고 실행이 중지될 때까지 현재 로드된 도메인으로 계속됩니다. 모든 플랫폼별 컴파일 또는 커스텀 정의는 도메인을 다시 로드할 때까지 설정되지 않습니다. 이 경우 코드가 올바르게 빌드되기 위해 이러한 정의에 의존하는 예기치 못한 문제가 발생할 수 있으며, 이러한 문제는 쉽게 놓칠 수 있습니다.

    빌드 전 스크립트 변경

    플랫폼을 전환하거나 코드에서 에디터 스크립트를 수정한 다음 정의 세트를 계속 사용하려면 도메인을 다시 로드해야 합니다. 이 경우 -quit 인수를 사용해서는 안 되며, 그렇지 않으면 호출된 메서드가 실행된 후 에디터가 바로 종료됩니다.

    도메인이 다시 로드되면 InitializeOnLoad가 호출됩니다. 아래 코드는 스크립팅 정의 기호를 설정하고 에디터 코드에서 해당 기호를 활용하여 도메인 리로드가 완료된 후 어드레서블을 빌드하는 방법을 보여 줍니다. 플랫폼 전환 및 플랫폼별 컴파일에도 동일한 프로세스를 수행할 수 있습니다.

    [InitializeOnLoad]
    public class BuildWithScriptingDefinesExample
    {
        static BuildWithScriptingDefinesExample()
        {
            bool toBuild = SessionState.GetBool("BuildAddressables", false);
            SessionState.EraseBool("BuildAddressables");
            if (toBuild)
            {
                Debug.Log("Domain reload complete, building Addressables as requested");
                BuildAddressablesAndRevertDefines();
            }
        }
    
        [MenuItem("Build/Addressables with script define")]
        public static void BuildTest()
        {
    # if !MYDEFINEHERE
            Debug.Log("Setting up SessionState to inform an Addressables build is requested on next Domain Reload");
            SessionState.SetBool("BuildAddressables", true);
            string originalDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
            string newDefines = string.IsNullOrEmpty(originalDefines) ? "MYDEFINEHERE" : originalDefines + ";MYDEFINEHERE";
            Debug.Log("Setting Scripting Defines, this will then start compiling and begin a domain reload of the Editor Scripts.");
            PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, newDefines);
    # endif
        }
    
        static void BuildAddressablesAndRevertDefines()
        {
    # if MYDEFINEHERE
            Debug.Log("Correct scripting defines set for desired build");
            AddressableAssetSettings.BuildPlayerContent();
            string originalDefines = PlayerSettings.GetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
            if (originalDefines.Contains(";MYDEFINEHERE"))
                originalDefines = originalDefines.Replace(";MYDEFINEHERE", "");
            else
                originalDefines = originalDefines.Replace("MYDEFINEHERE", "");
            PlayerSettings.SetScriptingDefineSymbolsForGroup(EditorUserBuildSettings.selectedBuildTargetGroup, originalDefines);
            AssetDatabase.SaveAssets();
    # endif
            EditorApplication.Exit(0);
        }
    }
    
    문서 개요
    맨 위로
    Copyright © 2023 Unity Technologies — 상표 및 이용약관
    • 법률정보
    • 개인정보처리방침
    • 쿠키
    • 내 개인정보 판매 금지
    • Your Privacy Choices (Cookie Settings)