본문 바로가기
개발/Unity

Unity)DLL (Dynamic Link Library)-> UPM(UnityPackageManager) 배포

by 테샤르 2023. 10. 17.

DLL (Dynamic Link Library)-> UPM(UnityPackageManager) 배포

 

DLL으로 생성해서 UPM으로 배포하는 경우에는 asmdef 가 필요 없음(DLL)으로 이미 묶여있기 때문이다.

 

< Unity DLL 경로 >

C:\Program Files\Unity\Hub\Editor\2021.3.12f1\Editor\Data\Managed\UnityEngine

C:\WORKSPACE\SHC\UPM\Library\ScriptAssemblies\UnityEditor.UI.dll ..

 

 

<장점>

DLL으로 이미 컴파일되어서 따로 컴파일이 필요없다.

버전별로 관리 가능하다.

메모리가 공용이다.

코드가 통합되어서 들어간다.

 

 

 

반응형

 

< DLL 에서 I/O 처리 >

 private static readonly string SCRIPTABLE_NAME = "CustomHierarchyScriptable.asset";
        private static readonly string PACAKAGE_NAME = "com.neowiz.shc.customhierarchy";

        public static CustomHierarchyScriptable LoadAsset()
        {
            CustomHierarchyScriptable asset = null;
            string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            string appendPath = Path.Combine(assemblyFolder, "CustomHierarchyScriptable.asset");

            if (IsPackage(appendPath))
            {
                asset = (CustomHierarchyScriptable)AssetDatabase.LoadAssetAtPath($"Packages/{PACAKAGE_NAME}/Editor/{SCRIPTABLE_NAME}", typeof(CustomHierarchyScriptable));
            }
            else
            {
                asset = AssetDatabase.LoadAssetAtPath<CustomHierarchyScriptable>($"Assets/CustomHierarchy/Editor/{SCRIPTABLE_NAME}");
            }

            Utill.ShowLog($" LoadAsset result : {asset}");

            return asset;
        }


        private static bool IsPackage([CallerFilePath] string callerFilePath = null)
        {
            var path = Path.GetDirectoryName(callerFilePath);

            Utill.ShowLog($"IsPackage  callerFilePath : {callerFilePath} / path : {path} / PACAKAGE_NAME : {PACAKAGE_NAME}");
            return path.Contains(PACAKAGE_NAME);
        }

 

 

<단점>

수정하는 과정이 어렵고 관리가 불편하다.

외부에 노출될때 코드가 바로 노출되지 않아서 보안이 유지가 된다.

 

 

 

< Visual Studio DLL 빌드 후 처리 (PostBuid) >

빌드 전 처리 / 빌드 후 처리에 대한 이벤트를 설정해두면 좀더 편리하다.

이벤트 설정하는 법은 다음과 같다.

[프로젝트] - [속성]

copy /y "$(TargetDir)CustomHierarchy.dll" "..\..\UPM\Assets\CustomHierarchy\Editor\"

빌드 이벤트를 추가한다. (위의 코드는 파일을 복사하는 코드이다.)

반응형

 

다른 방법으로는 [솔루션 탐색기] -[클릭]

프로젝트 설정 파일에서 수정 및 확인 가능하다.

 

Visual Studio 빌드 이벤트 지정( C# ) : [링크]

 

빌드 이벤트 지정(C#) - Visual Studio (Windows)

빌드 이벤트를 사용하여 빌드 시작 전 또는 빌드 완료 후 실행되는 명령을 지정하는 방법을 알아봅니다.

learn.microsoft.com

 

★☆☆☆☆

 

반응형

댓글