public class LODChange : MonoBehaviour
{
[MenuItem("Component/LOD/Set Default LOD Range", false, 0)]
static void DoSetDefaultLODRange()
{
var list = Selection.GetFiltered<GameObject>(SelectionMode.TopLevel);
foreach (var go in list)
{
var d = go.GetComponent<LODGroup>();
if (null != d)
{
var lods = d.GetLODs();
lods[0].screenRelativeTransitionHeight = 0.05f;
lods[1].screenRelativeTransitionHeight = 0.01f;
d.SetLODs(lods);
PrefabUtility.RecordPrefabInstancePropertyModifications(d);
}
}
}
}
일단 소스코드를 보자. 코드는 new script로 새 스크립트 만든다음 붙여넣기 하면 된다.
컴파일하면 유니티 에디터 위에 Component/LOD/Set ~ 라는 메뉴가 생긴다. [MenuItem()] 에서 보이는 것처럼 말이다.
내용을 대충보면 Selection.Getfilterd 이므로 하이어라키에서 선택된 놈들 중 GameObject인걸 가져오는데 Toplevel 즉 자식은 제외하고 부모만 가져오겠다는걸로 보인다.
foreach 문을 돌면서 가져온 gameObject의 원하는 컴포넌트를 원하는 대로 수정해서 프리팹이면 수정내역을 저장하겠다 이런 말인것 같다.
사용법: 바꾸고싶은 게임오브젝트를 다중선택 한 후 메뉴를 클릭하면 된다.
아주 간단한 코드지만, 아주 많은 gameObject를 한번에 바꾸고싶을때 일일이 노가다하지 않아도 되어 상당히 유용하게 쓰일수 있겠다.
https://forum.unity.com/threads/editing-multiple-lod-prefabs-at-once.257156/
'프로그래밍 > 유니티 (unity)' 카테고리의 다른 글
두트윈 move 끝날때까지 기다리기(코루틴) (0) | 2022.06.15 |
---|---|
using Cinemachine 안될때(에러날때) (2) | 2022.04.26 |
유니티) The character used for Underline is not available in font asset 해결법 (0) | 2022.03.03 |
unity) cube rotation with pivot changing. 큐브 땅에 굴리기 (0) | 2022.02.28 |
DoTween 대리자는 인수를 1개 사용하지 않습니다 에러뜰때(유니티) (0) | 2022.02.28 |