유니티 can't add script 오류

유니티를 처음 시작했을 때 스크립트를 작성하고 실행을 때 가장 먼저 본 오류 구문이 유니티 can't add script 오류 메시지였습니다. 그대로 따라 보고 만들었는데 오류가 나서 한참 헤멧 었는데요. 유니티에서 can't add script 오류 메시지에는 여러 종류가 있을 수 있지만 그중 클래스 이름이 다르기 때문에 발생하는 오류가 있습니다.

 

유니티 can't add script 오류 원인

유니티를 처음 시작하시는 분들이 C# 스크립트 파일을 처음 만들 때 이름을 주의해서 작성해 주셔야 합니다. 파일 명이 클래스 명으로 지정되기 때문에 처음 파일을 생성하고 나서 엔터를 바로 눌러 버리시면 안 됩니다.

 

파일을 생성하고 바로 엔터키를 눌러서 해당 파일 이름으로 클래스 이름이 설정됩니다.

파일명-클래스이름
파일명이 그대로 클래스 이름으로 됩니다

파일명을 변경한다고 클래스 이름이 변경되지 않습니다. 이 상태에서 프로젝트를 실행시키면 오류가 발생하게 됩니다.

파일이름과 클래스이름이 다른 경우
파일명은 변경하지만 클래스 이름은 변경되지 않습니다.

위 상태에서 프로젝트를 실행하면 아래와 같은 can't add script 유니티 오류 메시지를 보게 되는 것입니다.

유니티 can
유니티 can't add script 메시지 오류

 

오류 해결 방법

오류 해결 방법은 클래스 이름을 파일 이름과 동일하게 변경해주면 됩니다. 처음 유니티를 시작했을 때 코드만 보게 되고 클래스 이름을 확인하지 않아 오류를 찾는데 많은 시간을 허비했었는데요. 여러분들은 빨리 찾으셨으면 좋겠습니다.

 

300x250

댓글(12)

  • 유린이
    2022.04.10 17:48

    감사합니다 은인이십니다 이 간단한 걸 자꾸 오류나서 엄청 헤맸네요

  • ㅇㅇ
    2022.06.01 10:07

    이런 비밀이 있엇다니 감사합니다 슨생님

  • 서성현
    2022.07.20 21:39

    public class OnKeyPress_MoveSprite : MoneBehavious가 스크립트 안에 있는 거고 파일명은 OnKeyPress_MoveSprite 인데 뭐가 문제죠...?

    • 2022.07.28 13:35 신고

      전체적인 코드를 보는 것이 아니라 저도.. 딱 말씀드리가가 어렵네요.

    • 2022.07.29 23:07

      코드는 이렇게 되어있고

      using System.Collections;
      using System.Collections.Generic;
      using UnityEngine;


      public class OnKeyPress_MoveSprite : MoneBehaviour
      {

      public float spread = 2;

      float vx = 0;
      float vx = 0;
      bool LeftFlag = false;

      vold Update()
      {
      vx = 0;
      vy = 0;
      if (Input.GetKey("right"))
      {
      vx = spend;
      LeftFlag = false
      }
      if (Input.GetKey("Left"))
      {
      vx = -speed;
      LeftFlag = true;
      }
      if (Input.GetKey("up"))
      {
      vy = speed;
      }
      if (Input.GetKey("down"))
      {
      vy = -speed;
      }
      }
      void FixedUpdate()
      {

      this.trasform.Translate(vx / 50, vy / 50, 0);

      this.GetComponent<SpriteRenderer>().fLipx = LeftFlag;
      }
      }
      파일명은 OnKeyPress_MoveSprite이라고 되어있어요

    • 2022.08.01 23:32 신고

      float vx = 0;
      float vx = 0; 이 변수가 같은데요 vy 맞을꺼 같습니다. 그리고 speed 값은 어디에 정의되어 있는지....
      vx = spend; 값도 다른 곳에서 가져오는게 아니라면.. 확인해 보시면 좋을 것 같습니다.

  • 익명
    2022.07.24 23:56

    비밀댓글입니다

    • 익명
      2022.07.28 13:36

      비밀댓글입니다

  • 익명
    2022.08.27 00:27

    비밀댓글입니다

    • 2022.08.30 22:26 신고

      다른 이유가 있을지 모르겠지만 혹시 공백이 더 들어가거니 있으지 모르니 코드를 복사해 놓으시고 다시 파일을 만들어 보시면 어떨까합니다.

Designed by JB FACTORY