Assets\SampleResources\Scripts\UnityMainThreadDispatcher.cs(34,25): warning CS0618: 'Object.FindObjectOfType<T>()' is obsolete: 'Object.FindObjectOfType has been deprecated. Use Object.FindFirstObjectByType instead or if finding any instance is acceptable the faster Object.FindAnyObjectByType'
导致该问题的原因:unity版本更新
这个警告 CS0618 表明你代码中使用的 Object.FindObjectOfType<T>()方法已经被 Unity 标记为过时(Obsolete)。自 Unity 2023.1 版本起,此方法以及 FindObjectsOfType开始被弃用,并计划在未来的版本中移除。而Unity 官方推荐使用新的方法来替代,主要原因在于性能优化。
旧的 FindObjectOfType方法在返回结果前会默认按物体的 InstanceID 进行排序,而这个排序操作消耗了该方法绝大部分的执行时间(在一些测试中甚至超过90%),但在大多数情况下这种排序并非必要。
解决方法1:
原有代码: _instance = FindObjectOfType<MyComponent>();
改成:_instance = FindAnyObjectByType<MyComponent>();
解决方法2:
原有代码: _instance = FindObjectOfType<MyComponent>();
改成:_instance = FindFirstObjectByType<MyComponent>();