添加BuildPipelineSettings,支持自定义 LinkXmlProcess和 ObfuscationProcess的 callbackOrder。

main
walon 2025-06-28 20:20:08 +08:00
parent 59db0dfaab
commit 02ed0608e4
6 changed files with 38 additions and 2 deletions

View File

@ -0,0 +1,15 @@
using System;
using UnityEngine;
namespace Obfuz.Settings
{
[Serializable]
public class BuildPipelineSettings
{
[Tooltip("callback order of LinkXmlProcessor")]
public int linkXmlProcessCallbackOrder = 10000;
[Tooltip("callback order of ObfuscationProcess")]
public int obfuscationProcessCallbackOrder = 10000;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 68737b215ecfe344a93d56007e186432
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -5,11 +5,15 @@ using UnityEngine;
namespace Obfuz.Settings namespace Obfuz.Settings
{ {
public class ObfuzSettings : ScriptableObject public class ObfuzSettings : ScriptableObject
{ {
[Tooltip("enable Obfuz")] [Tooltip("enable Obfuz")]
public bool enable = true; public bool enable = true;
[Tooltip("build pipeline settings")]
public BuildPipelineSettings buildPipelineSettings;
[Tooltip("assembly settings")] [Tooltip("assembly settings")]
public AssemblySettings assemblySettings; public AssemblySettings assemblySettings;

View File

@ -25,6 +25,8 @@ namespace Obfuz.Settings
private SerializedObject _serializedObject; private SerializedObject _serializedObject;
private SerializedProperty _enable; private SerializedProperty _enable;
private SerializedProperty _buildPipelineSettings;
private SerializedProperty _assemblySettings; private SerializedProperty _assemblySettings;
private SerializedProperty _obfuscationPassSettings; private SerializedProperty _obfuscationPassSettings;
private SerializedProperty _secretSettings; private SerializedProperty _secretSettings;
@ -61,6 +63,8 @@ namespace Obfuz.Settings
_serializedObject?.Dispose(); _serializedObject?.Dispose();
_serializedObject = new SerializedObject(setting); _serializedObject = new SerializedObject(setting);
_enable = _serializedObject.FindProperty("enable"); _enable = _serializedObject.FindProperty("enable");
_buildPipelineSettings = _serializedObject.FindProperty("buildPipelineSettings");
_assemblySettings = _serializedObject.FindProperty("assemblySettings"); _assemblySettings = _serializedObject.FindProperty("assemblySettings");
_obfuscationPassSettings = _serializedObject.FindProperty("obfuscationPassSettings"); _obfuscationPassSettings = _serializedObject.FindProperty("obfuscationPassSettings");
_secretSettings = _serializedObject.FindProperty("secretSettings"); _secretSettings = _serializedObject.FindProperty("secretSettings");
@ -88,6 +92,8 @@ namespace Obfuz.Settings
EditorGUI.BeginChangeCheck(); EditorGUI.BeginChangeCheck();
EditorGUILayout.PropertyField(_enable); EditorGUILayout.PropertyField(_enable);
EditorGUILayout.PropertyField(_buildPipelineSettings);
EditorGUILayout.PropertyField(_assemblySettings); EditorGUILayout.PropertyField(_assemblySettings);
EditorGUILayout.PropertyField(_obfuscationPassSettings); EditorGUILayout.PropertyField(_obfuscationPassSettings);
EditorGUILayout.PropertyField(_secretSettings); EditorGUILayout.PropertyField(_secretSettings);

View File

@ -16,7 +16,7 @@ namespace Obfuz.Unity
{ {
public class LinkXmlProcess : IUnityLinkerProcessor public class LinkXmlProcess : IUnityLinkerProcessor
{ {
public int callbackOrder => 10000; public int callbackOrder => ObfuzSettings.Instance.buildPipelineSettings.linkXmlProcessCallbackOrder;
public string GenerateAdditionalLinkXmlFile(BuildReport report, UnityLinkerBuildPipelineData data) public string GenerateAdditionalLinkXmlFile(BuildReport report, UnityLinkerBuildPipelineData data)
{ {

View File

@ -16,7 +16,7 @@ namespace Obfuz.Unity
#if UNITY_2019_1_OR_NEWER #if UNITY_2019_1_OR_NEWER
public class ObfuscationProcess : IPostBuildPlayerScriptDLLs public class ObfuscationProcess : IPostBuildPlayerScriptDLLs
{ {
public int callbackOrder => 10000; public int callbackOrder => ObfuzSettings.Instance.buildPipelineSettings.obfuscationProcessCallbackOrder;
public static event Action<ObfuscationBeginEventArgs> OnObfuscationBegin; public static event Action<ObfuscationBeginEventArgs> OnObfuscationBegin;