챗지피티가 컴포넌트를 붙였을 때 인스펙터에서 넣어야 하는 에셋을 자동으로 할당해주는 코드라길래 그대로 복붙했는데
에디터에서 봤을 때 결과 자체는 원하는 셰이더로 다 할당이 잘 됐음
근데 정작 테스트를 키면 자동으로 할당된 저 셰이더 변수가 null이라고 인스펙터에 넣으라는 에러뜸. 그래서 다시 확인해 보면 오류 났다는 오브젝트들 전부 다 제대로 셰이더 들어가 있음..
CharacterBody를 가진 오브젝트가 기존에 49개가 있었는데 이 스크립트 만들고 다 자동으로 셰이더 들어갔음. 근데 이상한 건 오류는 47개만 뜸. 안 뜨는 둘은 뭔지도 모르겟슴...
그리고 다음 씬에는 3개가 있는데 여기도 다 오류가 나는 게 아니라 한놈만 뜸
캐릭터바디는 모든 몹이 다 가지고 있어야 하는 거고 셰이더도 전부 공통으로 쓰는 거라 그때그때 넣는 게 귀찮아서 써보려고 했던 건데 커스텀 에디터를 제대로 써본 적이 없어서 내가 뭘 잘못하고 있는 건지 몰루겟음...
---해결----
코드를 이렇게 고치고 기존에 이미 붙여놓은 애들 하나씩 클릭해서 인스펙터 갱신시켜주니 고쳐졋음
dissolve 오타 아님?
세이브가 안됐나 봐
serializedObject를 쓰거나 EditorUtility.SetDirty로 바뀐걸 알려줘야 함
https://docs.unity3d.com/kr/2022.3/ScriptReference/SerializedObject.html
https://docs.unity3d.com/6000.0/Documentation/ScriptReference/EditorUtility.SetDirty.html
serializedObject.Update(); serializedObject.FindProperty("flashShader").objectReferenceValue = Shader.Find("asdf"); serializedObject.ApplyModifiedProperties(); 아마 이런 느낌으로 바꾸면 될 것 같음
ㅇㅇ 하나씩 선택해서 인스펙터 안보면 저 로직 안돌아가니깐 다른 방식으로 푸는 것도 고민해보는게 좋을 듯