我正在尝试在创建后从我的页面填充我的场景,但是我收到了上述错误。
这是针对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
知道如何在创建项目后将项目添加到场景中吗?
urhoApp?.addItem(urhoval);
在我的urho应用程序中:
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"));
}
答案 0 :(得分:1)
您可以尝试在主线程上调用它:
InvokeOnMain(() =>{
//Your code here
}
答案 1 :(得分:0)
Android活动的每个事件总是在一个线程上调用 - “主线程”。
此线程由Queue支持,所有活动事件都将发布到该队列中。它们按插入顺序执行。
如果您正在调用Finish(),则线程将从当前任务中释放。
启动Urho线程的Android线程在Urho启动时仍处于活动状态,并被视为 Main 。因此它无法处理您的ResourceCache。
你应该完成()你的Android线程启动你的Urho线程。
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();
};