2017-01-05 3 views
0

私のページから自分のシーンを作成しようとしていますが、上記のエラーが発生しています。Urho Android - イベントの送信はメインスレッドからのみサポートされています

これはアンドロイドのためである

は、それは、iOS(スレッドのセキュリティといくつかの問題)に取り組んでいます

01-05 18:45:19.139 E/Urho3D (32719): Sending events is only supported from the main thread 
01-05 18:45:19.139 E/Urho3D (32719): Sending events is only supported from the main thread 
01-05 18:45:19.139 E/Urho3D (32719): Sending events is only supported from the main thread 
01-05 18:45:19.139 E/Urho3D (32719): Attempted to get resource Models/Box.mdl from outside the main thread 
01-05 18:45:19.149 E/Urho3D (32719): Attempted to get resource Materials/Stone.xml from outside the main thread 

それが作成された後、私のシーンに項目を追加する方法任意のアイデア?私urhoアプリで

urhoApp?.addItem(urhoval);

public void addItem(string p) 
     { 

      modelNode2 = scene.CreateChild(p); 
      modelNode2.Position = new Vector3(5.0f, 1.0f, 5.0f); 

      modelNode2.SetScale(10.0f); 

      var obj2 = modelNode2.CreateComponent<StaticModel>(); 
      obj2.Model = ResourceCache.GetModel("Models/Box.mdl"); 
      obj2.SetMaterial(urhoAssets.GetMaterial("Materials/Stone.xml")); 
     } 

答えて

1

あなたは、メインスレッド上で、それを呼び出すために試みることができる:

InvokeOnMain(() =>{ 
        //Your code here 
        } 
0

アンドロイド活動のすべてのイベントが常に上と呼ばれていますシングルスレッド - "メインスレッド"。

このスレッドは、すべてのアクティビティイベントがポストされるキューによってバックアップされます。それらは挿入順に実行されます。

Finish()を呼び出す場合、スレッドは現在のタスクから解放されます。

あなたのUrhoスレッドを開始するあなたのAndroidスレッドは、Urhoが起動するとまだ生きていて、メインとみなされます。したがって、ResourceCacheを処理できません。

あなたはを完了してください。あなたのUrhoスレッドを開始するAndroidスレッド。

startBtn.Click += (sender, e) => 
     { 
      Intent intent = new Intent(this, typeof(Urho3DActivity)); 
      intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.SingleTop); 
      StartActivity(intent); 
      Finish(); 
     }; 

iOSが異なります。メインスレッドはなく、Apple OSは本質的な安定性を持ってイベントを処理します。

startButton.TouchUpInside += delegate 
     { 
      Urho.Application Urho3DApp = Urho.Application.CreateInstance(typeof(Urho3DApp), new ApplicationOptions("Data")); 
      Urho3DApp.Run(); 
     }; 
関連する問題