2016-10-11 6 views
0

Testproject1에 BaseEmptyScene이 있습니다. BaseEmptyScene에는 GameObject가 없습니다. 이 프로젝트와 장면에서 유일한 것은 bang()이라는 정적 메서드가있는 C# 스크립트입니다.지연 cmd -executeMethod 또는 cmd에서 활성 장면 설정

저는 '구형'이라는 장면이있는 구형이라는 두 번째 프로젝트가 있습니다. 그것에는 기본 GameObjects Sphere와 Cube가 있으며 스크립트는 없습니다. 'Assets> 패키지 내보내기'를 실행하고 모든 것을 SphereCube.unity 패키지로 내 보냈습니다.

다음은 SphereCube.unitypackage를 Testproject1로 가져온 후 bang() 메서드를 실행하기위한 명령 줄입니다.

C:\Program Files\Unity\Editor>Unity.exe -projectPath SomePath\TempProj -importPackage Path\SphereCube.unitypackage -executeMethod TestClass.bang 

이 명령은 단일성을 열고, 패키지를 가져 와서 bang fine 메소드를 실행합니다. see unity command Line Argument doc

내 문제는 패키지를 가져온 후 메서드를 실행하도록 단결을 말할 수 없습니다. 다음은 bang() 모양입니다. 현재 항상 장면 수를 1로 표시합니다. 가져 오기가 완료되면 Assets 폴더의 두 장면을 볼 수 있어야합니다 (1 스크립트 및 가져온 SphereCube 장면이있는 빈 장면)

방법이 실행될 때 단결과 관련이 있기 때문에 활성 장면을 새로 추가 된 장면으로 변경할 수 없습니다. 단 하나의 장면 만 있습니다.

일단 가져 오기가 완료되면 방법을 실행할 수 있습니까? 어떤 이벤트가 발생합니다 .... 현재 실행중인 Unity PID를 가져 와서 다른 외부 스크립트에서 메시지를 보내는 것이 더 쉽습니다 ...

답변

1

필요한 것은 AssetPostprocessor 클래스입니다. 지금까지 완료 (사이드 노트 : 프로젝트의 어딘가에 정적 메소드를위한 빈 장면이 필요 없음).

아마도 가장 필요한 것은 OnPostprocessModel 방법입니다 (이 링크에서도 샘플 코드를 찾을 수 있습니다). 당신의 '빅뱅'방식으로
, 당신은이 같은 간단한 수행 할 수 있습니다 그것은 정적 방법으로 정적 클래스의로 당신은 이것에 대한 현장 또는 아무것도 필요하지 않습니다

using UnityEngine; 
public static class YourClass { 
    public static void Bang(GameObject myGO) { 
      //Do whatever you want with the GO you just imported 
    } 
} 

을; 원하는 스크립트 (AssetPostprocessor 구현 포함)에서 Bang으로 전화 할 수 있습니다.

희망이 있습니다.

+0

감사 마크; OnPostprocessModel은 내가 필요한 것 같습니다. 하지만 전화를받지 못했습니다. 내가 가진 빈 프로젝트 - 이제는 OnPostprocessModel (go) 메서드 만 있고 Bang이하는 일을합니다. cmd를 통해 '비어있는'프로젝트를 열고 SphereCube 패키지를 가져옵니다. 이 시점에서 나는 OnPostprocessModel이 호출 될 것이라고 기대했지만 .. 그러나 그렇지 않습니다. OnPostprocessModel은 프로젝트의 스크립트 에셋 파일에 들어갑니다. – Davvit

+0

네,하지만 클래스는 기본 클래스로 "AssetPostprocessor"를 가져야합니다 (내 대답은 Unity 문서에 대한 링크의 샘플 코드를 참조하십시오). 그렇게했다면, 아직 방법은 호출되지 않습니다. Unity를 열어 거기에서 가져 오십시오. 여전히 트리거되지 않으면 문제를 해결해야합니다. 이 방법으로 작동하면 cmd에서 가져 오기가 시작될 때 AssetPostprocessor에 문제가 있습니다. –