강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

paehwang님의 프로필 이미지
paehwang

작성한 질문수

절대강좌! 유니티 6 - TPS 게임으로 배우는 유니티 마스터클래스

NPC 스폰 로직 구현

[질문] Component 이름 관련해서 질문이 있습니다.

해결된 질문

작성

·

96

0

안녕하세요.

 

강의를 듣다보면

애니메이션 상태값이나 GameObject 이름등을

참조할대 매번

[이름 오탈자에 주의해 주세요]

라는 말씀을 하고 계시는데요.

 

유니티 외 다른 프로그래밍을 할때는 이러한 문제를 막고자

이름을 상수로 고정 선언해두고, 해당 값을 참조하고 있는데,

유니티에서는 이러한 접근은 할 수 없는 것일까요?

 

const val SPAWN_POINT_GROUP = "SpawnPointGroup"

 

같은 느낌으로 말이죠.

답변 1

1

이재현님의 프로필 이미지
이재현
지식공유자

안녕하세요.

처음 하시는 분들을 위해 오탈자에 대한 주의사항을 말씀드렸습니다. 조금 과했나봅니다.ㅎ

말씀하신데로 C#도 당연히 상수가 존재합니다. 변경되지않는 문자열을 다음과 같이 선언하고 사용하셔도 좋습니다.

const string SPAWN_POINT_GROUP = "SpawnPointGroup";
readonly string SPAWN_POINT_GROUP = "SpawnPointGroup";

문자열을 여러곳에서 접근한다면 아래와 같이 상수로 선언하고 접근하시는것이 바람직합니다.

paehwang님의 프로필 이미지
paehwang
질문자

아 저 값은 스크립트에서만 사용할 수 있고 실제 에디터에서 생성한 오브젝트의 인스펙터에서는 해당 오브젝트의 이름으로 지정할때 사용할 수는 없는 것이죠?

이재현님의 프로필 이미지
이재현
지식공유자

네, 위 코드는 스크립트에서 게임오브젝트 이름을 상수로 정의하시고 사용하는 방법입니다.

제가 질문을 정확히 이해했는지 모르겠지만, 생성한 오브젝트의 이름을 런타입(실행 중)에 변경하시고자 한다면 다음과 같이 하시면 되세요.

const string SPAWN_POINT_GROUP = "SpawnPointGroup";

var spawnPointGroup = new GameObject(SPAWN_POINT_GROUP);

또는

spawnPointGroup.name = SPAWN_POINT_GROUP;
paehwang님의 프로필 이미지
paehwang
질문자

좋은 말씀 감사합니다.

제가 글을 쓰는 재주가 없나봐요.

 

에디터 인스펙터에 있는 Game Object 이름 을 어딘가 Resource 에 정의한 값을 쓰고,

해당 값을 인스펙터도 쓰고 스크립트에서도 쓰면,

이름으로 정보를 찾을 때 오타를 걱정할 필요가

없을거 같아서 문의드렸던겁니다.

실시간으로 무언가를 바꾸고자하는건 아니었구요.

paehwang님의 프로필 이미지
paehwang

작성한 질문수

질문하기