강의

멘토링

로드맵

Inflearn Community Q&A

paehwang's profile image
paehwang

asked

Absolute Course! Unity 6 - Unity Masterclass Learning Through TPS Game

NPC spawn logic implementation

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

Resolved

Written on

·

122

0

안녕하세요.

 

강의를 듣다보면

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

참조할대 매번

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

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

 

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

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

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

 

const val SPAWN_POINT_GROUP = "SpawnPointGroup"

 

같은 느낌으로 말이죠.

C#unity

Quiz

싱글턴 패턴을 게임 매니저에 적용하는 주된 이유는 무엇일까요?

모든 오브젝트를 쉽게 찾기 위해서

클래스의 인스턴스를 하나만 유지하고 어디서든 접근하기 위해서

데이터를 저장하고 불러오기 위해서

게임 오브젝트를 파괴하지 않기 위해서

Answer 1

1

indiegamemaker님의 프로필 이미지
indiegamemaker
Instructor

안녕하세요.

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

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

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

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

paehwang님의 프로필 이미지
paehwang
Questioner

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

indiegamemaker님의 프로필 이미지
indiegamemaker
Instructor

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

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

const string SPAWN_POINT_GROUP = "SpawnPointGroup";

var spawnPointGroup = new GameObject(SPAWN_POINT_GROUP);

또는

spawnPointGroup.name = SPAWN_POINT_GROUP;
paehwang님의 프로필 이미지
paehwang
Questioner

좋은 말씀 감사합니다.

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

 

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

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

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

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

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

paehwang's profile image
paehwang

asked

Ask a question