반응형
Local identifier in file
에셋의 파일 아이디를 가져오는 기능이 필요했는데, 아무래도 유니티에서는 지원하는 기원은 아닌가 보네요. 그저 구글링해서 얻은 기능이고 기록용으로 남깁니다.
스크립트
#if UNITY_EDITOR
using System.Reflection;
using UnityEditor;
public static class UnityEditorUtils
{
/// <summary>
/// 에셋의 파일 아이디 가져오기
/// </summary>
/// <param name="unityObject"></param>
/// <returns></returns>
public static int GetAssetFileID(UnityEngine.Object unityObject)
{
PropertyInfo inspectorModeInfo = typeof(SerializedObject).GetProperty("inspectorMode", BindingFlags.NonPublic | BindingFlags.Instance);
SerializedObject serializedObject = new SerializedObject(unityObject);
inspectorModeInfo.SetValue(serializedObject, InspectorMode.Debug, null);
SerializedProperty localIdProp = serializedObject.FindProperty("m_LocalIdentfierInFile");
return localIdProp.intValue;
}
}
#endif
예제
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
// 파일 아이디 로그로 확인하는 버튼
if (GUILayout.Button("Print File ID", GUILayout.Height(40)))
{
var navMeshData = AssetDatabase.LoadAssetAtPath<NavMeshData>("Asset/NavMesh.asste");
int fileId = UnityEditorUtils.GetAssetFileID(navMeshData);
UnityEngine.Debug.Log(fileId);
}
}
마무리
파일 아이디를 가져오는 함수로 필요에 맞게 사용하시면 되겠습니다.
참고 : https://forum.unity.com/threads/how-to-get-the-local-identifier-in-file-for-scene-objects.265686/
반응형
'Utils' 카테고리의 다른 글
C#, 폴더 및 파일 전체 복사 (0) | 2023.07.04 |
---|---|
Unity, PlayerPrefs 커스텀 클래스 (오버라이딩) (0) | 2023.06.01 |
Unity, 박스 콜라이더 기즈모 (0) | 2023.05.11 |
Unity, Transform 인스펙터 커스텀 (0) | 2023.05.09 |
NGUI, BBCode 태그 제거하기 (Replace) (4) | 2023.04.08 |
댓글