Unity의meta 파일에 쓴guid 정보
3865 단어 Unity
개요
이 기사는 유닛상guid의 구조와 구조를 활용한 팁스를 소개했다.
Tips 위주라 이 구조를 아는 사람이 Tips를 건너뛰는 것도 문제없다.
guid 소개
이번에 깊이 파고든 상세한 상황은 몰라도 되기 때문에 내용이 비교적 무분별하다. 주로 덮어쓰지 않은 32개의 문자열과 Unity가 Asseets 디렉터리에서 관리하는 Asseet 파일(장면 파일,Prefab, 스크립트, 디렉터리, 자원 등)을 모두 이guid로 나누었다.Inspector에서 다른 Plefab 등의 Asseet 파일을 참조할 때도 Asset 파일에는 guid만 표시됩니다.
그나저나 AssetDatabase.GUIDToAssetPath를 통해guid에서 파일 경로나 AsseDatabase를 얻을 수 있습니다.AssetPathToGUID는 파일 경로에서 guid를 생성할 수 있지만 guid에서 파일 경로를 생성할 때 사용하는 것은 아니며 중복되지 않으면 적당한 문자열이라도 문제가 없습니다.
이번에 깊이 파고든 상세한 상황은 몰라도 되기 때문에 내용이 비교적 무분별하다. 주로 덮어쓰지 않은 32개의 문자열과 Unity가 Asseets 디렉터리에서 관리하는 Asseet 파일(장면 파일,Prefab, 스크립트, 디렉터리, 자원 등)을 모두 이guid로 나누었다.Inspector에서 다른 Plefab 등의 Asseet 파일을 참조할 때도 Asset 파일에는 guid만 표시됩니다.
그나저나 AssetDatabase.GUIDToAssetPath를 통해guid에서 파일 경로나 AsseDatabase를 얻을 수 있습니다.AssetPathToGUID는 파일 경로에서 guid를 생성할 수 있지만 guid에서 파일 경로를 생성할 때 사용하는 것은 아니며 중복되지 않으면 적당한 문자열이라도 문제가 없습니다.
.meta 파일은
Asset 파일과 쌍을 이루고 Asset 파일의 메타정보(사운드의 경우 kbps 등, 이미지의 경우 isReadable 로고 등)가 적힌 파일이며 guid도 이 파일에 적혀 있다.
이 파일이 없을 때 초기 값을 쓴 상태에서 자동으로 생성되며 스크립트와Prefab일 때 메타데이터도guid 정도만 쓰이기 때문에 버전 관리를 할 때 주의해야 합니다.Meta 파일을 함께 추가하고 Asset 파일을 조작할 때 Unity의 프로젝트 창에서 조작합니다. 이런 규칙을 준수한다면 특별히 신경 쓸 필요가 없습니다.
그러나 사운드와 이미지 등의 에셋 파일이라면 위에 적힌 것처럼 값을 설정하는 메타 정보도 적기 때문에 중요한 파일이 된다.
또한 Asset 파일을 조작할 때 프로젝트 창에서 조작하는 것이 일반화되었다. 즉, 파일의 메타 정보이다.meta 파일에 기술되어 있으므로 Unity 관리 외부에서 파일을 조작할 경우메타 파일이 업데이트되지 않기 때문에 설정값이 고장난 경우입니다.
Tips
이 기사의 주요 내용으로 guid가 어려움을 겪을 때 편리한 팁을 활용하는 것이다.
참조를 통일적으로 변경하려는 Prefab
대화 상자에서 Unix 명령을 사용하여 처리합니다.
예를 들어 위 그림의 Sphere prefab는 테스트 필드에서 테스트 prefab를 참조한 상태에서 테스트참조를 copy prefab로 바꾸고 싶습니다.(ルートディレクトリがAssetsの場合)
置換元のguid
$ grep "guid" ./Prefabs/test.prefab.meta
guid: 7674e048f0903d7439bcd629d143d6bb
置換先のguid
$ grep "guid" ./Prefabs/test_copy.prefab.meta
guid: 51b5f5acbc1bc0f46bee74ffa692fa18
全てのprefabの、全てのguidを置き換える
$ find ./Prefabs -name "*.prefab" | xargs sed -i -e 's/guid: 7674e048f0903d7439bcd629d143d6bb/guid: 51b5f5acbc1bc0f46bee74ffa692fa18/g'
シーンファイル内も置き換えるなら
$ find ./Scenes -name "*.unity" | xargs sed ...
필드 이름을 변경할 때 Inspector의 설정값 복원 초기화
예를 들어 위 그림의 Sphere 스크립트에 있는 테스트를renamedTest로 이름을 바꾸려고 합니다.
Sphere.cs 내의 필드 이름만 변경하면 Asset 파일에서 이전 필드 이름의 설정값이 유지되고 새 필드 이름의 설정값이 초기화됩니다.
낡은 설정치가 그대로 있으면 사용되지 않고 다시 설정할 수밖에 없거나 변경 전과 통합해 부활시키는 것은 번거롭고 무섭고 기계적으로 처리하고 싶다.置換元スクリプトのguid
$ grep "guid" ./Scripts/Sphere.cs.meta
guid: cebfb56161901ff4d9f26830eac423ae
スクリプトのフィールド名部分を抜き出してフィールド名置換
$ find ./Prefabs -name "*.prefab" | xargs sed -i -e '/guid: cebfb56161901ff4d9f26830eac423ae/,/^---/{s/test:/renamedTest:/}'
같은 이름의 스크립트 필드를 생략해야 하기 때문에 대상 스크립트의 필드 이름 부분을 지정하고 그 필드의 이름을 바꿉니다.
파일의 키워드와 중복될 수 있지만 오류 로그가 중복되기 때문에 필드 이름만 바꾸면 됩니다.
(ルートディレクトリがAssetsの場合)
置換元のguid
$ grep "guid" ./Prefabs/test.prefab.meta
guid: 7674e048f0903d7439bcd629d143d6bb
置換先のguid
$ grep "guid" ./Prefabs/test_copy.prefab.meta
guid: 51b5f5acbc1bc0f46bee74ffa692fa18
全てのprefabの、全てのguidを置き換える
$ find ./Prefabs -name "*.prefab" | xargs sed -i -e 's/guid: 7674e048f0903d7439bcd629d143d6bb/guid: 51b5f5acbc1bc0f46bee74ffa692fa18/g'
シーンファイル内も置き換えるなら
$ find ./Scenes -name "*.unity" | xargs sed ...
置換元スクリプトのguid
$ grep "guid" ./Scripts/Sphere.cs.meta
guid: cebfb56161901ff4d9f26830eac423ae
スクリプトのフィールド名部分を抜き出してフィールド名置換
$ find ./Prefabs -name "*.prefab" | xargs sed -i -e '/guid: cebfb56161901ff4d9f26830eac423ae/,/^---/{s/test:/renamedTest:/}'
매우 편리하다
못다 하다
Tips를 Unity 명령으로 사용하는 것이 더 편리합니다.
(이미 다른 방법으로 해결한 사람이 있을지도 모른다)
Reference
이 문제에 관하여(Unity의meta 파일에 쓴guid 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/wordijp/items/3e4b87756fd11c893a9d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Unity의meta 파일에 쓴guid 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/wordijp/items/3e4b87756fd11c893a9d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)