문제해결)Could not extract GUID in text file xx
GUID가 이상하게 꼬이는 문제가 발생했다.
발생원인으로 추정되는 내용은
'Unity를 재생하지 않을 때 편집기에서 SpriteAtlas에서 Sprite를 가져와서 장면을 저장을 해버려서 생겼다.'
Unity Project를 텍스트 기반의 장면 파일로 구성하고 있는 과정에서 실제
해당 file을 Editor로 열어서 해당 라인으로 가면 guid: 00000000000000000000000000000000,으로 된 코드를 볼 수 있다.
반응형
GUID는 자산의 고유한 식별자인데 이게값은 중복되면 안 되는 값인데 guid: 00000000000000000000000000000000,으로 중복이 되게 된 경우로 해당 텍스트를 재 편집해야 한다.
해당 guid 00000 을 삭제하고 다시 저장하면 에러가 사라진다.
/// <summary>
/// SpriteAtlas를 런타임 메모리로 처리하는 과정에서 씬을 저장할때 GUID 가 꼬이는 씬 제거하는 메뉴
/// </summary>
[MenuItem("Util/GUID Clear")]
public static void GUIDClear()
{
List<string> scenePathList = new List<string>();
foreach (EditorBuildSettingsScene scene in EditorBuildSettings.scenes)
{
if (scene.enabled)
scenePathList.Add(scene.path);
}
//string changeString = "texture: {fileID: 0}";
string changeString = " texture: {fileID: 2, type: 0}";
foreach (string str in scenePathList)
{
string tempPath = Application.dataPath.Replace("Assets", "") + str;
string[] allLines = File.ReadAllLines(tempPath);
for (int i = 0; i < allLines.Length; ++i)
{
string lineStr = allLines[i];
Debug.LogVerb($"[GUID Clear] Scene :{str} - Line {i} : {lineStr}");
if (lineStr.Contains("fileID:") && lineStr.Contains("guid: 00000000000000000000000000000000"))
{
Debug.LogVerb($"[GUID Clear] Scene {str} : Line[{i}] :: {lineStr} Clear !!");
lineStr.Remove(0, lineStr.Length);
allLines[i] = changeString;
}
}
File.WriteAllLines(tempPath, allLines);
}
}
코드 원본 및 참조 : [링크]
Unity 텍스트 직렬화 파일 형식 : [링크]
★☆☆☆☆
반응형
댓글