【问题标题】:C#: How to use LoadImage() function in a thread that is not main threadC#:如何在非主线程的线程中使用 LoadImage() 函数
【发布时间】:2020-01-28 20:12:08
【问题描述】:

我想统一显示图像(使用 C# 脚本),我需要创建一个线程来实现它。但是,程序说 LoadImage() 只能从主线程调用。在这种情况下,如何显示图像? (我必须使用多线程)

【问题讨论】:

  • 你不能。大多数 Unity API 只能在主线程中使用。不幸的是,基本上所有常见的 Texture2D 东西都只能同步使用。除了也许你可以试试ECS,但设置起来有点棘手
  • 为什么必须使用“多线程”?
  • 你可以从主线程开始一个新线程,传递一个字节数组的引用。在辅助线程中,您对数据进行反序列化。完成后,终止线程,您的 main 具有对您可以传递给 LoadImage 的数据的引用。
  • @Everts 是真的 .. 但LoadImage 本身仍然在主线程中运行;)而且它也相当昂贵
  • 你可以在主线程中运行特定的操作。看看stackoverflow.com/questions/54206912/…

标签: c# multithreading unity3d


【解决方案1】:

就像已经说过的那样,LoadImage 在主线程中运行,并且在另一个线程上运行它并非不可能。
解决问题的一种方法是使用统一支持的native plugins
例如,文档Low-level native plug-in interface 和统一给出的example package 中有一些信息。

这里还有一个很好的question/answer 与您的问题相关。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-04
    • 2011-04-25
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多