WinCNT

윈도우의 CMD(Command Prompt)로 Unity의 Editor 스크립트의 메소드 실행하기! 본문

Unity/Unity 관련

윈도우의 CMD(Command Prompt)로 Unity의 Editor 스크립트의 메소드 실행하기!

WinCNT_SSS 2023. 9. 15. 10:54

서론

이른바 커맨드 라인(macOS 터미널이나 Windows 커맨드 프롬프트 등)을 이용해서 유니티의 스크립트의 메소드를 실행하는 방법에 대해 조금 조사해봤다

지금 환경이 Windows니 커맨드 프롬프트(CMD)로 실행하는 방법을 조사했다

 

참고로 커맨드 라인으로 Unity를 실행하는 건 보통 테스트나 빌드 자동화를 구축할 때 사용되곤 하지만…지금은 이미 더 좋은 툴이 많아서 커맨드 라인만으로 구축하는 경우는 많이 없을 듯 하다


Unity 에디터 커맨드 라인 인자

이건 역시 공식 문서에 모든 게 나와있긴 하다😇

Unity 에디터 커맨드 라인 인자 - Unity 매뉴얼

 

Unity 에디터 커맨드 라인 인자 - Unity 매뉴얼

Mac OS의 경우, 다음을 터미널에 입력하여 Unity를 실행해야 합니다.

docs.unity.cn

모두 읽고 나서 제대로 작성해도 되지만, 일단 어떤 식으로 움직이는지 궁금하니 최소한도로 작성하고 사용해봤다


Editor폴더에 실행할 static 메소드 작성

다음과 같이 간단한 코드를 작성해봤다

using UnityEngine;

public class ExCommandPrompt
{
    public static void PrintLog()
    {
        Debug.Log("Hello, Wolrd!");
    }
}

여기서 중요한 것은 반드시 Editor폴더에 static으로 메소드를 작성해야 한다는 점이다


CMD 실행

CMD는 다음과 같이 작성했다

"C:\Program Files\Unity\Hub\Editor\<version>\Editor\Unity.exe" -batchmode -quit -logfile "로그 파일 패스(디렉토리 + 파일명)" -projectPath "실행할 프로젝트의 디렉토리" -executeMethod ExCommandPrompt.ExCommandPrompt

처음 패스의 <version>에는 프로젝트와 같은 버전의 Unity.exe가 있는 폴더를 설정해야 한다

틀리면 당연히 에러가 발생할 가능성이 매우 높다(필자는 틀려서 에러가 발생했다)

 

-batchmode는 배치 모드로 실행하라는 커맨드이고, -quit는 다른 커맨드 실행을 마친 후 Unity 에디터를 종료하라는 커맨드이다

-logfile는 로그 파일을 출력하라는 커맨드이며, 출력 패스를 지정할 수 있다

디렉토리는 생략도 가능하며, 생략하면 CMD를 실행한 디렉토리에 지정한 파일명의 로그 파일이 출력된다

-projectPath에는 실행할 프로젝트의 디렉토리를 지정한다

예를 들면 "C:\Users\유저명\Documents\GitHub\MyProject”

-executeMethod에는 위에서 작성한 스크립트의 클래스와 메소스를 지정한다

 

그 외에도 -nographics나 -buildTarget와 같은 키워드도 쓸까 했지만, 우선은 일단 이정도만 작성하기로 했다!


결과

CMD에서 실행하면 지정한 패스에 로그 파일이 출력된다

로그 파일을 확인하면 Debug.Log의 내용이 출력된 것을 확인할 수 있다!


마무리

처음에는 다른 버전의 Unity.exe를 지정해서 로그에 에러가 발생했다는 출력이 계속 나왔다

다음부턴 주의해야겠다…


참고 사이트

Unity 에디터 커맨드 라인 인자 - Unity 매뉴얼

 

Unity 에디터 커맨드 라인 인자 - Unity 매뉴얼

Mac OS의 경우, 다음을 터미널에 입력하여 Unity를 실행해야 합니다.

docs.unity.cn