본문 바로가기

관리 메뉴

[Unity] Batchmode 함수 호출을 이용해 빌드하기 본문

프로그래밍/ㄴ기타

[Unity] Batchmode 함수 호출을 이용해 빌드하기

최갓 2019. 6. 11. 18:54
반응형

Windows Batch Command나 젠킨스(Jenkins)등을 이용해 자동화 시스템 등을 만들어야 하는 일이 종종있다.

필자는 비개발자들도 사용할 수 있도록 툴을 제공하기 위해 가장 많이 만들었던 것 같다.

 

윈도우의 경우 배치 명령어를 통해 .bat 확장자 파일을 만들어 사용해도 되지만,

쉘 스크립트가 익숙하다면 .sh확장자 파일을 만들어 사용하자

 

 

아무 폴더에나 .bat혹은 .sh파일을 생성하고 다음과 같이 적는다

 

"유니티설치경로\Unity\Editor\Unity.exe" -quit -batchmode -logFile "빌드 로그파일이 생성될 위치"\build_log.log -buildTarget win32 -projectPath "프로젝트경로" -executeMethod "클래스명"."함수명"

 

Unity.exe를 -batchmode옵션을 붙여 실행하게 되면 콘솔 버전으로 실행된다.

-quit은 모든 명령을 마친후 자동으로 유니티가 종료될 수 있도록 해준다.

 

-logFile은 빌드 로그가 생성되게끔 하고, 해당 경로를 지정해주기만 하면 된다.

-buildTarget은 빌드할 플랫폼이다

-projectPath는 빌드할 프로젝트의 경로를 지정해주면 된다

-executeMethod는 특정 함수를 실행시켜주는 역할을 한다

 

기타 다른 빌드 옵션은 다음의 Documentation을 참고하자

:https://docs.unity3d.com/kr/530/Manual/CommandLineArguments.html

 

위 명령어는 바로 cmd창에 unity.exe를 이용해 사용해도된다.

하지만 커맨드파일을 통해 변수의 입력 등 확장성을 가지게 하고, 매번 인자들을 적기엔 번거롭기도 하고 실수할 확률도 올라가기 때문에 커맨드 파일로 만들 것을 추천한다

 

다시 본론으로 와서, 위 커맨드 중 executeMethod가 핵심이다.

-executeMethod "클래스명"."함수명"을 간단히 설명하면

프로젝트 내에 있는 "클래스명" 클래스에서 "함수명" 함수를 실행시키는 것이다.

 

이를 활용해서, 유니티를 따로 실행하지 않고, 간단히 배치파일 혹은 쉘커맨드 파일을 통해서 빌드를 가능하게 해보자.

 

Unity 프로젝트 내에 빌드를 담당할 클래스 파일을 하나 만들어주자.

그리고 다음과 같이 메소드를 작성해보자

//BuildMGR.cs

...
...

static void DoAutoBuild_Test()
{
	string strResultDirectory = "C:\BuildResult\";
	string[] vSceneList = { "Assets/test_scene_1.unity" , "Assets/test_scene_2.unity" };
	BuildPipeline.BuildPlayer(
            vSceneList,
            strResultDirectory,
            BuildTarget.StandaloneWindows,
            BuildOptions.None);
}

...
...

BuildPipeline.BuildPlayer는 프로젝트를 빌드하게 해주는 메소드이다.

 

자세한 정보는 아래 Documentation을 참고하자

:https://docs.unity3d.com/ScriptReference/BuildPipeline.BuildPlayer.html

 

vSceneList에 빌드할 Unity Scene목록을 작성해주고, 배치 또는 쉘 커맨드를

-executeMethod BuildMGR.DoAutoBuild_Test

처럼 변경해주자

 

이제 기본적인건 끝났다.

해당 커맨드 파일을 실행하면 알아서 빌드가 되는 것을 볼 수 있을것이다.

 

이 기능을 잘 활용해 시스템을 구축하면, 여러가지 플랫폼에 따른 빌드 등 귀찮은 문제를

쉽게 해결할 수 있다.

 

 

 


Unity Batch커맨드 관련하여 더 많은 정보를 원하시는 분은 다음 도큐먼트를 확인해보세요^^

:https://docs.unity3d.com/kr/530/Manual/CommandLineArguments.html

 

유니티 - 매뉴얼: 커맨드라인 인수

Build Player 파이프라인 내부 처리/Behind the Scenes 커맨드라인 인수 일반적으로는 Unity를 시작할 때 바탕 화면에서 아이콘을 더블클릭함으로써 시작하지만 커맨드라인에서 실행(즉 MacOS 터미널 또는

docs.unity3d.com

 

batchmode로 스크립트를 실행하기 위해선, 메소드가 static이며, Editor폴더안에 스크립트가 존재해야 합니다!

반응형
Comments