diff --git a/Editor/BuildProcessors/CopyStrippedAOTAssemblies.cs b/Editor/BuildProcessors/CopyStrippedAOTAssemblies.cs index 934d3a0..9c9dd7a 100644 --- a/Editor/BuildProcessors/CopyStrippedAOTAssemblies.cs +++ b/Editor/BuildProcessors/CopyStrippedAOTAssemblies.cs @@ -44,7 +44,7 @@ namespace HybridCLR.Editor.BuildProcessors #if UNITY_VISIONOS case BuildTarget.VisionOS: #endif - return $"{projectDir}/Library/Bee/artifacts/iOS/ManagedStripped"; + return $"{projectDir}/Library/Bee/artifacts/iOS/ManagedStripped"; case BuildTarget.WebGL: return $"{projectDir}/Library/Bee/artifacts/WebGL/ManagedStripped"; case BuildTarget.StandaloneOSX: diff --git a/Editor/Commands/Il2CppDefGeneratorCommand.cs b/Editor/Commands/Il2CppDefGeneratorCommand.cs index a56c2b0..a4228c5 100644 --- a/Editor/Commands/Il2CppDefGeneratorCommand.cs +++ b/Editor/Commands/Il2CppDefGeneratorCommand.cs @@ -1,4 +1,5 @@ using HybridCLR.Editor.Link; +using HybridCLR.Editor.Settings; using System; using System.Collections.Generic; using System.Linq; @@ -21,6 +22,8 @@ namespace HybridCLR.Editor.Commands HotUpdateAssemblies = SettingsUtil.HotUpdateAssemblyNamesIncludePreserved, OutputFile = $"{SettingsUtil.LocalIl2CppDir}/libil2cpp/hybridclr/generated/UnityVersion.h", OutputFile2 = $"{SettingsUtil.LocalIl2CppDir}/libil2cpp/hybridclr/generated/AssemblyManifest.cpp", + EnableProfilerInReleaseBuild = HybridCLRSettings.Instance.enableProfilerInReleaseBuild, + EnableStraceTraceInWebGLReleaseBuild = HybridCLRSettings.Instance.enableStraceTraceInWebGLReleaseBuild, }; var g = new Il2CppDef.Il2CppDefGenerator(options); diff --git a/Editor/Il2CppDef/Il2CppDefGenerator.cs b/Editor/Il2CppDef/Il2CppDefGenerator.cs index 6765d35..1bee8da 100644 --- a/Editor/Il2CppDef/Il2CppDefGenerator.cs +++ b/Editor/Il2CppDef/Il2CppDefGenerator.cs @@ -22,6 +22,10 @@ namespace HybridCLR.Editor.Il2CppDef public string OutputFile2 { get; set; } public string UnityVersion { get; set; } + + public bool EnableProfilerInReleaseBuild { get; set; } + + public bool EnableStraceTraceInWebGLReleaseBuild { get; set; } } private readonly Options _options; @@ -77,6 +81,16 @@ namespace HybridCLR.Editor.Il2CppDef lines.Add($"#define HYBRIDCLR_TUANJIE_VERSION 10000"); #endif + if (_options.EnableProfilerInReleaseBuild) + { + lines.Add("#define HYBRIDCLR_ENABLE_PROFILER_IN_RELEASE_BUILD 1"); + } + + if (_options.EnableStraceTraceInWebGLReleaseBuild) + { + lines.Add("#define HYBRIDCLR_ENABLE_STRACE_TRACE_IN_WEBGL_RELEASE_BUILD 1"); + } + frr.Replace("UNITY_VERSION", string.Join("\n", lines)); frr.Commit(_options.OutputFile); diff --git a/Editor/Settings/HybridCLRSettingProvider.cs b/Editor/Settings/HybridCLRSettingProvider.cs index a87a393..43065e6 100644 --- a/Editor/Settings/HybridCLRSettingProvider.cs +++ b/Editor/Settings/HybridCLRSettingProvider.cs @@ -25,6 +25,9 @@ namespace HybridCLR.Editor.Settings private SerializedProperty _outputAOTGenericReferenceFile; private SerializedProperty _maxGenericReferenceIteration; private SerializedProperty _maxMethodBridgeGenericIteration; + private SerializedProperty _enableProfilerInReleaseBuild; + private SerializedProperty enableStraceTraceInWebGLReleaseBuild; + private GUIStyle buttonStyle; public HybridCLRSettingsProvider() : base("Project/HybridCLR Settings", SettingsScope.Project) { } public override void OnActivate(string searchContext, VisualElement rootElement) @@ -52,6 +55,8 @@ namespace HybridCLR.Editor.Settings _outputAOTGenericReferenceFile = _serializedObject.FindProperty("outputAOTGenericReferenceFile"); _maxGenericReferenceIteration = _serializedObject.FindProperty("maxGenericReferenceIteration"); _maxMethodBridgeGenericIteration = _serializedObject.FindProperty("maxMethodBridgeGenericIteration"); + _enableProfilerInReleaseBuild = _serializedObject.FindProperty("enableProfilerInReleaseBuild"); + enableStraceTraceInWebGLReleaseBuild = _serializedObject.FindProperty("enableStraceTraceInWebGLReleaseBuild"); } private void OnEditorFocused() { @@ -140,6 +145,8 @@ namespace HybridCLR.Editor.Settings EditorGUILayout.PropertyField(_outputAOTGenericReferenceFile); EditorGUILayout.PropertyField(_maxGenericReferenceIteration); EditorGUILayout.PropertyField(_maxMethodBridgeGenericIteration); + EditorGUILayout.PropertyField(_enableProfilerInReleaseBuild); + EditorGUILayout.PropertyField(enableStraceTraceInWebGLReleaseBuild); if (EditorGUI.EndChangeCheck()) { _serializedObject.ApplyModifiedProperties(); diff --git a/Editor/Settings/HybridCLRSettings.cs b/Editor/Settings/HybridCLRSettings.cs index 92247bf..562def3 100644 --- a/Editor/Settings/HybridCLRSettings.cs +++ b/Editor/Settings/HybridCLRSettings.cs @@ -50,5 +50,11 @@ namespace HybridCLR.Editor.Settings [Header("MethodBridge泛型搜索迭代次数")] public int maxMethodBridgeGenericIteration = 10; + + [Header("Release发布模式下也开启Profiler支持")] + public bool enableProfilerInReleaseBuild = false; + + [Header("WebGL平台Release发布模式下也开启StraceTrace支持")] + public bool enableStraceTraceInWebGLReleaseBuild = false; } }