강의

멘토링

로드맵

Inflearn brand logo image

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

soboru123님의 프로필 이미지
soboru123

작성한 질문수

AI 시대의 혁신적인 게임 개발 입문 with Unity6

같은 오브젝트를 합치기

코드가 이해가 안됩니다..

해결된 질문

작성

·

61

1

  1. 같은 오브젝트를 합치기 강의 3:45쯤부터 작성하는 Clone.GetComponent<PlanetScript>().manager = this; 이 부분에서 에러가 생깁니다.

제 생각에는 해당 코드에서 PlanetScript를 선언해주지 않아서(전방 선언? 인클루드?) 인식을 못 하는 것 같은데 강의에서는 어떻게 잘 돌아가는건지 모르겠습니다.

혼자 해보려고 좀 붙잡고 있었는데 잘 모르겠습니다..

답변 2

1

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

안녕하세요. 오류 때문에 되게 답답하셨을 것 같습니다. 일단 제 컴퓨터 상에서 잘 돌아가기도 하고 완강하신 다른 수강자분들에게 공통되게 나타나는 오류 사항이 아니기에 뭔가 실수가 있으셨지 않을까 추측을 해봅니다.

 

원래는 오류코드를 봐야 어떤 에러가 났는지 파악이 가능해서 만약에 제 추측이 모두 아니라면 오류 코드를 제공해주시면 좋을 것 같습니다.

 

제가 생각하기로는 저 코드에서 오류가 날만한 부분은 Clone이라는 변수를 만들지 않았을 경우,PlanetScript라는 스크립트를 만들지 않았을 경우, PlanerScript에 manager라는 변수가 없을 경우입니다.

 

1번의 경우 GameObject Clone = Instantiate(... 로 이어지는 코드가 있어야합니다.

2번의 경우 PlanetScript는 강의를 순차적으로 진행하셨다면 만드셨을거고 이름이 잘못될 확률이 있지 않을까합니다. 너무 길다고 생각해서 Planet으로 축약해서 지으신 경우처럼요. 저도 가끔 그럽니다.

3번의 경우 manager라는 변수를 만들지 않았거나 이름이 다르거나, public으로 정의하지 않으셨을 경우 인식하지 못할 수 있습니다.

 

코드 자체가 잘못된 게 아닌한 휴먼 에러일 확률이 높아보이는데, 이럴 경우 자동완성을 사용하고 계시다면 자동완성이 뜨는지 안뜨는지로 이게 가능한 문법인지에 대한 정보를 알 수 있습니다.

 

자동완성 세팅까지 강의처럼 따라주셨다면 하나씩 자동완성으로 작성해보시면서 자동완성이 제공되지 않는 부분을 체크해주시면 도움이 될 것 같습니다. 해결 되면 좋겠군요.

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

파일 이름이랑 스크립트의 클래스 이름이 동일해야 한다고 합니다.

강의에서는 파일 만들자마자 스크립트에 클래스 이름이 동일하게 자동으로 생성되서 모르고 넘어갔습니다.

클래스 이름이 파일명으로 자동으로 설정되게 하는건 어떻게 하셨는지 궁금합니다. 챗gpt는 그런 기능이 없다고 하네요

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

그건 또 처음 경험하는 오류 시나리오긴 하네요. 유니티에서 스크립트를 만들면 자동으로 클래스에 그 이름이 부여되거든요. 특별한 설정 없이도 저는 몇년 전부터, 현재까지 그렇게 알아서 설정되는데 신기하군요.

 

오히려 이름을 잘못지어서 스크립트의 이름을 이후에 바꿀 경우에 내부에 자동 설정된 클래스명이랑 달라져서 오류가 나는 경우가 훨씬 일반적입니다. 그런 경우가 있는 거 자체를 처음 들어보네요. 그런 상황에는 클래스 이름이 대체 뭘로 설정되나요?

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

아.. 클래스 이름이 NewMonoBehaviourScript 였던걸로 봐서 파일 생성할 때 이름을 바로 지어줘야 됐던 것 같습니다... 답변 주셔서 감사합니다!

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

또 새로운 표본을 얻어서 사람들을 도 잘 도울 수 있겠네요. 질문 이용해주셔서 감사합니다!

0

안녕하세요, 인프런 AI 인턴입니다.

soboru123님께서 유니티 강의를 수강하시면서 Clone.GetComponent<PlanetScript>().manager = this; 코드 부분에서 오류가 발생하고 있는 상황을 설명해 주셨습니다. 이 문제는 PlanetScript 클래스에 대한 참조나 정의가 제대로 이루어지지 않았을 때 발생할 수 있습니다. 이를 해결하기 위한 일반적인 방법을 안내드리겠습니다.

문제 발생 원인 및 해결 방법:

  1. PlanetScript 클래스 정의:

    • PlanetScript는 사용자 정의 클래스일 가능성이 높습니다. 이 클래스가 제대로 선언되어 있는지 확인하세요. 만약 해당 스크립트 파일이 존재하지 않거나, 유니티 프로젝트 내에서 올바르게 추가되지 않았다면 오류가 발생할 수 있습니다.
  2. 스크립트의 네임스페이스 확인:

    • PlanetScript 클래스 정의가 다른 네임스페이스에 위치해 있다면, 이를 사용하려면 해당 네임스페이스를 using 구문으로 선언해줘야 합니다. 예를 들어, using YourNamespace; 와 같이 추가해야 합니다.
  3. 컴파일 에러 확인:

    • 콘솔에서 구체적인 오류 메시지를 확인해 보세요. 오류가 발생한 라인과 함께 어떤 종류의 문제인지 알려주므로, 이를 통해 구체적인 원인을 진단할 수 있습니다.

해당 문제를 빠르게 해결하기 위해서는 다음의 두 가지 사항을 점검해 주시기 바랍니다:
- PlanetScript 클래스 파일이 유니티 프로젝트에 제대로 추가되어 있는지 확인합니다.
- 다른 스크립트 파일에서 이 클래스를 호출할 때 올바르게 참조되고 있는지 확인합니다.

혹시 관련된 내용들이 부족하다면 아래와 같이 유사한 질문을 다룬 기존 게시물을 참조하시기를 바랍니다:
- Unity에서 사용자 정의 스크립트 오류 해결하기

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

soboru123님의 프로필 이미지
soboru123

작성한 질문수

질문하기