Open King098 opened 4 years ago
+1
额。。xx is not supported,不是应该找Unity去supported一下么?
我这的版本 2019.4.X Burst 1.4.8 版本 有burstCompile 的类或结构体在config 配置中时, 在IOS Xcode导出的时 执行注入就失败了
当我用Unity2020.3.23.f1,包括InjectFix和以下组件进行iOS构建(Build Settings->iOS Build)时,我得到了一个错误。 有什么变通办法吗?
Component
namespace Examples
{
public class Test : MonoBehaviour
{
[BurstCompile(CompileSynchronously = true)]
private struct MyJob : IJob
{
public void Execute()
{
}
}
}
Build Error
(0,0): Burst error BC1016: The managed function `IFix.WrappersManagerImpl.GetPatch(int id)` is not supported
at Examples.Test.MyJob.Execute(Examples.Test.MyJob* this)
at Unity.Jobs.IJobExtensions.JobStruct`1<Examples.Test.MyJob>.Execute(ref Examples.Test.MyJob data, System.IntPtr additionalPtr, System.IntPtr bufferRangePatchData, ref Unity.Jobs.LowLevel.Unsafe.JobRanges ranges, int jobIndex) (at /Users/bokken/buildslave/unity/build/Runtime/Jobs/Managed/IJob.cs:30)
BuildFailedException: Burst compiler (1.4.7) failed running
Burst编译器在OnPostBuildPlayerScriptDLLs中运行,但 InjectFix的IFixEditor.AutoInjectAssemblys首先被执行,并改变了程序集的内容,导致错误。
(0,0): Burst error BC1016: The managed function `IFix.WrappersManagerImpl.GetPatch(int id)` is not supported
at Test.InverseX(UnityEngine.Quaternion rotation)
at TestJob.ProcessAnimation(TestJob* this, UnityEngine.Animations.AnimationStream* stream)
at UnityEngine.Animations.ProcessAnimationJobStruct`1<TestJob>.Execute(ref TestJob data, System.IntPtr animationStreamPtr, System.IntPtr methodIndex, ref Unity.Jobs.LowLevel.Unsafe.JobRanges ranges, int jobIndex) (at /Users/bokken/buildslave/unity/build/Modules/Animation/Managed/ProcessAnimationJobStruct.cs:49)
at Unity.Burst.Editor.BurstAotCompiler+BclRunner.RunProgram (UnityEditor.Utils.Program p, System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser) [0x001bf] in /Users/aaa/app/Library/PackageCache/com.unity.burst@1.4.7/Editor/BurstAotCompiler.cs:1011
at Unity.Burst.Editor.BurstAotCompiler+BclRunner.RunManagedProgram (System.String exe, System.String args, System.String workingDirectory, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser) [0x0003f] in /Users/aaa/app/Library/PackageCache/com.unity.burst@1.4.7/Editor/BurstAotCompiler.cs:928
at Unity.Burst.Editor.BurstAotCompiler+BclRunner.RunManagedProgram (System.String exe, System.String args, UnityEditor.Scripting.Compilers.CompilerOutputParserBase parser) [0x00000] in /Users/aaa/app/Library/PackageCache/com.unity.burst@1.4.7/Editor/BurstAotCompiler.cs:903
at Unity.Burst.Editor.BurstAotCompiler.OnPostBuildPlayerScriptDLLsImpl (UnityEditor.Build.Reporting.BuildReport report) [0x007b6] in /Users/aaa/app/Library/PackageCache/com.unity.burst@1.4.7/Editor/BurstAotCompiler.cs:444
at Unity.Burst.Editor.BurstAotCompiler.OnPostBuildPlayerScriptDLLs (UnityEditor.Build.Reporting.BuildReport report) [0x0000c] in /Users/aaa/app/Library/PackageCache/com.unity.burst@1.4.7/Editor/BurstAotCompiler.cs:164
at UnityEditor.Build.BuildPipelineInterfaces.OnPostBuildPlayerScriptDLLs (UnityEditor.Build.Reporting.BuildReport report) [0x00033] in /Users/bokken/buildslave/unity/build/Editor/Mono/BuildPipeline/BuildPipelineInterfaces.cs:516
当我有-enableInjectFix参数时,我禁用了BurstCompiler,并将IFixEditor.AutoInject设置为true。
public class IFixInitializer
{
[InitializeOnLoadMethod]
static void Initialize()
{
var arguments = Environment.GetCommandLineArgs();
if (Array.IndexOf(arguments, "-enableInjectFix") != -1)
{
IFixEditor.AutoInject = true;
DisableBurstCompiler();
}
else
{
IFixEditor.AutoInject = false;
}
}
static void DisableBurstCompiler()
{
var burstPlatformAotSettings = Type.GetType("Unity.Burst.Editor.BurstPlatformAotSettings,Unity.Burst.Editor");
if (burstPlatformAotSettings == null) return;
var getOrCreateSettings = burstPlatformAotSettings.GetMethod("GetOrCreateSettings", BindingFlags.NonPublic | BindingFlags.Static);
var enableBurstCompilation = burstPlatformAotSettings.GetField("EnableBurstCompilation", BindingFlags.NonPublic | BindingFlags.Instance);
var save = burstPlatformAotSettings.GetMethod("Save", BindingFlags.NonPublic | BindingFlags.Instance);
var aotSettingObj = getOrCreateSettings.Invoke(null, new object[] {EditorUserBuildSettings.activeBuildTarget});
enableBurstCompilation.SetValue(aotSettingObj, false);
save.Invoke(aotSettingObj, new object[] {EditorUserBuildSettings.activeBuildTarget});
}
}
当我用Unity2020.3.23.f1,包括InjectFix和以下组件进行iOS构建(Build Settings->iOS Build)时,我得到了一个错误。 有什么变通办法吗?
Component
namespace Examples { public class Test : MonoBehaviour { [BurstCompile(CompileSynchronously = true)] private struct MyJob : IJob { public void Execute() { } } }
Build Error
(0,0): Burst error BC1016: The managed function `IFix.WrappersManagerImpl.GetPatch(int id)` is not supported at Examples.Test.MyJob.Execute(Examples.Test.MyJob* this) at Unity.Jobs.IJobExtensions.JobStruct`1<Examples.Test.MyJob>.Execute(ref Examples.Test.MyJob data, System.IntPtr additionalPtr, System.IntPtr bufferRangePatchData, ref Unity.Jobs.LowLevel.Unsafe.JobRanges ranges, int jobIndex) (at /Users/bokken/buildslave/unity/build/Runtime/Jobs/Managed/IJob.cs:30) BuildFailedException: Burst compiler (1.4.7) failed running
你这个改了么
Unity (0,0): Burst error BC1016: The managed function
IFix.WrappersManagerImpl.GetPatch(int id)
is not supported
你好,当时这个问题是怎么解决的,我也遇到了同样的问题。
Unity (0,0): Burst error BC1016: The managed function
IFix.WrappersManagerImpl.GetPatch(int id)
is not supported