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# ) : [링크]
★☆☆☆☆
반응형
'개발 > Unity' 카테고리의 다른 글
문제해결)Unity Package Manager Error (0) | 2023.10.25 |
---|---|
문제해결) Atlas source cannot be null! (0) | 2023.10.23 |
Unity)Sprite Library Editor (스프라이트 라이브러리 에디터) (2) | 2023.10.16 |
Unity) ClipBoard (클립보드 : 복사 붙여 넣기 Copy & Paste) (0) | 2023.10.15 |
Unity) Unity Documentation (Unity 문서) (0) | 2023.10.12 |
댓글