私はTestproject1にBaseEmptySceneを持っています。 BaseEmptySceneにはGameObjectsがありません。このプロジェクトとシーンには、bang()という静的メソッドを持つc#スクリプトしかありません。遅延cmd -executeMethodまたはcmdからActiveシーンを設定する
「球」と呼ばれるシーン付き球と呼ばれる2番目のプロジェクトがあります。基本的なGameObjects SphereとCubeがあり、スクリプトはありません。私は 'Assets> Export Package'に行き、すべてをSphereCube.unitypackageにエクスポートしました。
これは、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フォルダの2つのシーンが表示されます(1つのスクリプトとインポートされたSphereCubeシーンの空のシーン)
private static void bang(){
...
sw.WriteLine("Scene Count = " + SceneManager.sceneCount);
sw.WriteLine("Active Scene = " + SceneManager.GetActiveScene().name + " " + SceneManager.GetActiveScene().path);
...
}
メソッドが実行されたときに限り団結が懸念している唯一の1シーンがありますので、私も新しく追加されたシーンにアクティブなシーンを変更傾けます。
インポートが完了したらメソッドを実行する方法はありますか?いくつかイベントが発生しています....現在実行中のUnity PIDを取得し、そのプロセスに別の外部スクリプトからメッセージを送信する方が簡単です...
ありがとうございます。 OnPostprocessModelは私の必要としているようです。しかし、それは呼ばれていません。私が持っていた空のプロジェクトは、OnPostprocessModel(go)メソッドしか持たず、Bangがやっていることをしています。 cmdを介して私は '空の'プロジェクトを開き、私のSphereCubeパッケージをインポートします。この時点で、私はOnPostprocessModelが呼び出されることを期待していましたが、そうではありません。 OnPostprocessModelはプロジェクトのスクリプトアセットファイルに入るだけですか? – Davvit
はい、クラスは基本クラスとして "AssetPostprocessor"を持っていなければなりません(私の答えのUnityドキュメントへのリンクのサンプルコードを参照してください)。そのようにしても、まだメソッドが呼び出されていない場合は、Unityを開いてそこからインポートしてみてください。まだトリガーされていない場合は、それを解決する必要がある側の問題です。このように動作する場合、cmdからインポートが開始されたときにAssetPostprocessorで何か問題があります –