有没有办法绕过/禁用主线程检查?

问题描述:

当从其他线程访问UnityEngine和UnityEditor中的类的方法和字段时,是否可以禁用/绕过Unity3D主线程检查?有没有办法绕过/禁用主线程检查?

如果是这样,有什么办法来实现这一目标? 有谁知道Unity团队如何实施此检查?

(我知道,和我目前正在使用其他技术,让我成功地解决任何多线程的问题,但这个问题是相当的学术型的:)

请只与可能的解决方案或信息作出反应为什么不能这样做。

如果Unity不允许您在主线程上分别在主线程上执行某些操作而不是,则假设至少有一个好理由。

试图规避它将几乎不可避免地导致问题,可能很难调试,因为Unity试图保护你免受两个彻底的非法事件的破坏或崩溃应用程序(即从不同的线程访问OpenGL上下文)或最有可能导致潜在问题的事情,如竞态条件,死锁等。

因此,即使有一种方法可以绕过所述检查,而无需访问代码并深入理解上下文中的多线程编程如果你真的设法绕过所述检查,那么它将会产生很大的反作用,弄巧成拙,为失败而设置自己,并难以调试问题。

每个框架都带有一套工作规则。如果Unity说“这个方法必须在主线程上调用”,那么您只需遵循这些规则。尤其是因为您无法访问引擎源代码,并且可以证明在这种特定环境下它不会成为问题。如果你有源代码,你可以禁用这些特定情况的检查。不过,如果框架开发者坚持认为这不是一个好主意,那么你最好听听他​​们,因为他们肯定知道他们的框架比任何人都要好得多。

+1

我知道如何使用此线程检查进行操作可能会导致问题,但这不是对本主题中提出的任何问题的回答。 – vvirehead 2014-08-30 19:41:36

+0

你问他们为什么要实施,除非Unity程序员愿意透露你所寻求的信息,否则这与答案一样接近。我强烈怀疑有什么办法可以规避检查,除非你要破解团结的引擎(可能违反Unity ToS)。 – LearnCocos2D 2014-08-30 19:55:59

+0

我寻求其他解决方案,那些不会破坏ToS并且不涉及Unity内部帮助的解决方案 - 也就是说,我想让Unity相信其他线程是主线。 Btw。我从来没有问过他们为什么实施这种限制 - 如果我是他们,我可能会这样做。 – vvirehead 2014-08-30 21:32:59