| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- using System.IO;
- using UnityEditorInternal;
- using UnityEngine;
- namespace HybridCLR.Editor.Settings
- {
- public class HybridCLRSettings : ScriptableObject
- {
- [Tooltip("enable HybridCLR")]
- public bool enable = true;
- [Tooltip("use il2cpp in unity editor installation location")]
- public bool useGlobalIl2cpp;
- [Tooltip("hybridclr repo URL")]
- public string hybridclrRepoURL = "https://gitee.com/focus-creative-games/hybridclr";
- [Tooltip("il2cpp_plus repo URL")]
- public string il2cppPlusRepoURL = "https://gitee.com/focus-creative-games/il2cpp_plus";
- [Tooltip("hot update assembly definitions(asd)")]
- public AssemblyDefinitionAsset[] hotUpdateAssemblyDefinitions;
- [Tooltip("hot update assembly names(without .dll suffix)")]
- public string[] hotUpdateAssemblies;
- [Tooltip("preserved hot update assembly names(without .dll suffix)")]
- public string[] preserveHotUpdateAssemblies;
- [Tooltip("output directory of compiling hot update assemblies")]
- public string hotUpdateDllCompileOutputRootDir = "HybridCLRData/HotUpdateDlls";
- [Tooltip("searching paths of external hot update assemblies")]
- public string[] externalHotUpdateAssembliyDirs;
- [Tooltip("output directory of stripped AOT assemblies")]
- public string strippedAOTDllOutputRootDir = "HybridCLRData/AssembliesPostIl2CppStrip";
- [Tooltip("supplementary metadata assembly names(without .dll suffix)")]
- public string[] patchAOTAssemblies;
- [Tooltip("output file of automatic generated link.xml by scanning hot update assemblies")]
- public string outputLinkFile = "HybridCLRGenerate/link.xml";
- [Tooltip("output file of automatic generated AOTGenericReferences.cs")]
- public string outputAOTGenericReferenceFile = "HybridCLRGenerate/AOTGenericReferences.cs";
- [Tooltip("max iteration count of searching generic methods in hot update assemblies")]
- public int maxGenericReferenceIteration = 10;
- [Tooltip("max iteration count of searching method bridge generic methods in AOT assemblies")]
- public int maxMethodBridgeGenericIteration = 10;
- private static HybridCLRSettings s_Instance;
- public static HybridCLRSettings Instance
- {
- get
- {
- if (!s_Instance)
- {
- LoadOrCreate();
- }
- return s_Instance;
- }
- }
- private static string GetFilePath()
- {
- return "ProjectSettings/HybridCLRSettings.asset";
- }
- public static HybridCLRSettings LoadOrCreate()
- {
- string filePath = GetFilePath();
- Object[] objs = InternalEditorUtility.LoadSerializedFileAndForget(filePath);
- s_Instance = objs.Length > 0 ? (HybridCLRSettings)objs[0] : (s_Instance ?? CreateInstance<HybridCLRSettings>());
- return s_Instance;
- }
- public static void Save()
- {
- if (!s_Instance)
- {
- return;
- }
- string filePath = GetFilePath();
- string directoryName = Path.GetDirectoryName(filePath);
- Directory.CreateDirectory(directoryName);
- var obj = new Object[1] { s_Instance };
- InternalEditorUtility.SaveToSerializedFileAndForget(obj, filePath, true);
- }
- }
- }
|