2016-10-11 3 views
0

私は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を取得し、そのプロセスに別の外部スクリプトからメッセージを送信する方が簡単です...

答えて

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で何か問題があります –

関連する問題