当从其他线程访问UnityEngine和UnityEditor中的类的方法和字段时,是否可以禁用/绕过Unity3D主线程检查?
如果是这样,有什么方法可以实现这一目标? 有谁知道Unity Team如何实施这项检查?
(我知道,目前我正在使用其他技术让我能够成功解决任何多线程问题,但这个问题属于学术类型:)
请仅回答可能的解决方案或信息,为什么不能这样做。
答案 0 :(得分:0)
如果Unity不允许你在主线程上分别在 主线程上做某事,那么假设至少有一个很好的理由。
试图绕过它几乎不可避免地会导致问题,可能很难调试,因为Unity试图保护你不要做任何会破坏或崩溃应用程序的非法的非法事情(即从不同的线程访问OpenGL上下文)或者最有可能导致潜在问题的事情,如竞争条件,死锁等等。
因此,即使有办法绕过所述检查,无法访问代码并在该代码的上下文中深入理解多线程编程,这将极具适得其反,弄巧成拙并使自己陷入困境并难以如果您确实设法绕过所述检查,则调试问题。
每个框架都附带一组要处理的规则。如果Unity说“必须在主线程上调用此方法”,您只需遵循这些规则即可。特别是因为您无法访问引擎源代码,并且可能证明在这种特定情况下不会出现问题。如果您有源代码,则可以禁用对这些特定情况的检查。尽管如此,如果框架开发人员坚持认为这不是一个好主意,你最好先听听他们,因为他们肯定比其他任何人都更了解他们的框架。