namespace는 클래스들을 묶어 분류를 해주는 것이다.
namespace UserEditor { }
CreateAssetMenu는 menu를 통해 Asset을 생성해 주는 것이다. 해당 코드는 Create에서 Playbles를 선택하면 첫 번째에 Enemy Spawn Point를 생성해 주고 Enemy Spawn Point를 누르면 fileName과 같은 형태의 Object가 생성된다.
[CreateAssetMenu(fileName = "SpawnPoint", menuName = "Playables/Enemy Spawn Point", order = 1)]
MenuItem은 Unity 창에서 왼쪽 위에 선택할 수 있는 것으로 property는 우선순위를 말한다. 이는 단축키를 삽입할 수 있고 해당 코드는 ctrl+alt+F1를 단축키로 설정한 것이다.
[MenuItem("Window/SpawnData/Enemy %&F1", priority = 1)]
ScriptableObject은 CreateInstance라는 함수를 가지고 있다.
spawnPoint = CreateInstance<SpawnPoint>();
serializedObject에서 원하는 형태의 Property를 찾고 해당 게임 오브젝트 형태에 맞는 선택 창을 만들어준다.
SerializedProperty property = serializedObject.FindProperty("MapSize"); EditorGUILayout.PropertyField(property);
원한은 문자열을 앞에서부터 찾아 해당 문자열을 가장 먼저 만날 때 번지수를 return 해준다.
int start = absolutePath.IndexOf("/Assets/");
IndexOf와 문자열을 뒤에서부터 찾아 해당 문자를 만나면 index를 return 해준다.
int end = assetPath.LastIndexOf('/');
원하는 문자열을 만드는 것으로 원래 있던 문자열에서 원하는 번지수만 잘라 문자열로 return 해준다.
absolutePath = absolutePath.Substring(start + 1, absolutePath.Length - start - 1);