首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Urho Android -仅支持从主线程发送事件

Urho Android -仅支持从主线程发送事件
EN

Stack Overflow用户
提问于 2017-01-06 07:54:32
回答 2查看 373关注 0票数 0

我试图在创建后从我的页面填充我的场景,但我得到了上面的错误。

这是针对安卓系统的,适用于iOS (线程安全方面的一些问题)

代码语言:javascript
复制
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应用中:

代码语言:javascript
复制
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"));
        } 
EN

回答 2

Stack Overflow用户

发布于 2017-03-16 00:44:45

您可以尝试在主线程上调用它:

代码语言:javascript
复制
InvokeOnMain(() =>{
                   //Your code here 
                  }
票数 2
EN

Stack Overflow用户

发布于 2017-06-11 05:14:38

android活动的每个事件总是在一个线程上调用--“主线程”。

这个线程由一个队列支持,所有的活动事件都被发送到这个队列中。它们是按插入顺序执行的。

如果您正在调用Finish(),则线程将从当前任务中释放。

当Urho启动时,启动Urho线程的Android线程仍然有效,它被视为。因此它不能处理你的ResourceCache。

你应该完成启动你的Urho线程的Android线程()

代码语言:javascript
复制
startBtn.Click += (sender, e) =>
        {
            Intent intent = new Intent(this, typeof(Urho3DActivity));
            intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.SingleTop);
            StartActivity(intent);
            Finish();
        };

iOS是不同的。没有主线程,Apple OS以固有的稳定性处理事件。

代码语言:javascript
复制
startButton.TouchUpInside += delegate
        {
            Urho.Application Urho3DApp = Urho.Application.CreateInstance(typeof(Urho3DApp), new ApplicationOptions("Data"));
            Urho3DApp.Run();
        };
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41496762

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档