• 反馈 8.0
  • (必现)ET8.1最新Demo启动运行的过程中,这时候切到Rider修改代码,然后回到Unity,点击停止Play按钮,会报这个错误

标题:

ET8.1最新Demo启动运行的过程中,这时候切到Rider修改代码,然后回到Unity,点击停止Play按钮,会报这个错误(必现,Unity的Bug但是不知道ET要怎么避免) 强迫症难受~~~

InvalidCastException: Specified cast is not valid.

UnityEditor.Scripting.ScriptCompilation.EditorCompilation.CompleteActiveBuildWhilePumping () (at <4911eca47f294e18a7b3306f02701303>:0)

UnityEditor.Scripting.ScriptCompilation.EditorCompilation.TickCompilationPipeline (UnityEditor.Scripting.ScriptCompilation.EditorScriptCompilationOptions options, UnityEditor.BuildTargetGroup platformGroup, UnityEditor.BuildTarget platform, System.Int32 subtarget, System.String[] extraScriptingDefines, System.Boolean allowBlocking) (at <4911eca47f294e18a7b3306f02701303>:0)

UnityEditor.Scripting.ScriptCompilation.EditorCompilation.TickCompilationPipeline (UnityEditor.Scripting.ScriptCompilation.EditorScriptCompilationOptions options, UnityEditor.BuildTargetGroup platformGroup, UnityEditor.BuildTarget platform, System.Int32 subtarget, System.String[] extraScriptingDefines, System.Boolean allowBlocking) (at <4911eca47f294e18a7b3306f02701303>:0)

UnityEditor.Scripting.ScriptCompilation.EditorCompilationInterface.TickCompilationPipeline (UnityEditor.Scripting.ScriptCompilation.EditorScriptCompilationOptions options, UnityEditor.BuildTargetGroup platformGroup, UnityEditor.BuildTarget platform, System.Int32 subtarget, System.String[] extraScriptingDefines, System.Boolean allowBlocking) (at <4911eca47f294e18a7b3306f02701303>:0)

UnityEditor.Scripting.ScriptCompilation.EditorCompilationInterface:TickCompilationPipeline(EditorScriptCompilationOptions, BuildTargetGroup, BuildTarget, Int32, String[], Boolean)

默认使用的是第二种方式,如果切换到第三种方式,用上面同样的步骤就不会出现错误,但是第三种模式开发的时候不方便,还是第二种方式方便点

就是要用这种方式不要让unity自动编译

8.1 提供了F6 改完代码就按一下

    yiyi 如果可以的话,你下载最新demo按照我说的试一下,我没理解你说的 “提供了F6 改完代码就按一下” 这个应该和我说的不是一回事,不用按F6就出现了

    • yiyi 回复了此帖

      longsl 没有遇到过 一直用的手动编译
      可能是自己也习惯手动编译 所以暂时没遇到过什么问题

      qquiww 可以可以,闹麻了😂

      这不是ET的哪个好兄弟上传的哈哈哈,看复现工程都是ET的

      10 天 后

      顶一顶,大家看到麻烦顺便点进去投个票,强迫症确实难受 哈哈

      2 个月 后

      我打包的时候也遇到这个问题了,YooAsset 使用ScriptableBuildPipeline build的时候报这个错,使用BuiltinBuildPipeline 构建就没有报错,但是最后打出来的包刚开始运行就报错,有没有好哥哥遇到过这个问题。

        UpUpDraw 贴的这个图中报错应该是用了URP但是使用的内置管线打包导致的吧,但现在问题就是使用ScriptableBuildPipeline 构建的时候总是构建失败,错误提示就和楼主这个一样。

          UpUpDraw 解决了,清理了下Library,重新编译就好了,原理不明。

          8 个月 后

          这个问题稍微看一下UnityCSRef那个工程源码报错就能解决,那个报错函数第一行有个强转失败.

          var synchroContext = (UnitySynchronizationContext) SynchronizationContext.Current;

          伸手党可以把这个代码放在Unity.Core.dll

          using System.Threading; namespace ET { public class SynchronizationContextKeeper { #if UNITY_EDITOR private static SynchronizationContext UX; [UnityEditor.InitializeOnLoadMethod] static void Init() { UX = SynchronizationContext.Current; } #endif public static void BackToUX() { #if UNITY_EDITOR SynchronizationContext.SetSynchronizationContext(UX); #endif } } }

          然后在World.cs 的Dispose()中调用,在Dispose函数最后一行调用即可~

          说点什么吧...