Skip to content

IL2CPP / Unity 6000.3.5f2: TMP hook failure and WaitForSeconds MissingMethodException in SuccubusShowdown #856

Description

@lingdong0128-sys

Description

I am reporting a compatibility issue with XUnity.AutoTranslator on an IL2CPP game using Unity 6000.3.5f2.

BepInEx itself loads correctly, and XUnity.AutoTranslator is also detected and loaded, but the plugin runs into multiple runtime compatibility problems after startup.

The main symptoms are:

  • Failure to resolve some Unity/IL2CPP types such as UnityEngine.TextMesh, UnityEngine.WWW, and UnityEngine.GUI+ToolbarButtonSize
  • Failure to hook TMP_Text.SetCharArray(...)
  • MissingMethodException for UnityEngine.WaitForSeconds..ctor(Single) inside the plugin coroutine helper
  • Failure when attempting to load the TextMesh Pro override font

Because of these errors, I suspect there is still an incompatibility with this specific Unity 6000.3.5f2 IL2CPP setup.

Environment

  • OS: Windows 10 64-bit
  • Game: SuccubusShowdown
  • Game type: IL2CPP
  • Unity version: 6000.3.5f2
  • Game version: Unknown from local files
  • Game build GUID: 5134135b28314a75aa0b0ad5a0805b87
  • BepInEx version: 6.0.0-be.764
  • BepInEx commit: 5f39645992ab8b944cad394b63470e4920f8b16d
  • .NET runtime version reported by BepInEx: 6.0.7
  • XUnity.AutoTranslator version reported in log: 5.6.1
  • XUnity.ResourceRedirector version reported in log: 2.1.0

Notes About The Plugin Build

I downloaded what I believe is the latest build from the bbepis/XUnity.AutoTranslator master branch, but the plugin currently reports itself as 5.6.1 in the log. If needed, I can provide more information about the exact package I used.

Steps To Reproduce

  1. Install BepInEx IL2CPP for the game.
  2. Install XUnity.AutoTranslator for BepInEx IL2CPP.
  3. Launch the game.
  4. Observe BepInEx/LogOutput.log.

Current AutoTranslator Configuration

[Service]
Endpoint=LingoCloudTranslate
FallbackEndpoint=

[General]
Language=en
FromLanguage=ja

[Files]
Directory=Translation\{Lang}\Text
OutputFile=Translation\{Lang}\Text\_AutoGeneratedTranslations.txt
SubstitutionFile=Translation\{Lang}\Text\_Substitutions.txt
PreprocessorsFile=Translation\{Lang}\Text\_Preprocessors.txt
PostprocessorsFile=Translation\{Lang}\Text\_Postprocessors.txt

[TextFrameworks]
EnableIMGUI=False
EnableUGUI=True
EnableUIElements=True
EnableNGUI=True
EnableTextMeshPro=True
EnableTextMesh=False
EnableFairyGUI=True

[Behaviour]
MaxCharactersPerTranslation=200
IgnoreWhitespaceInDialogue=True
MinDialogueChars=20
ForceSplitTextAfterCharacters=0
CopyToClipboard=False
MaxClipboardCopyCharacters=2500
ClipboardDebounceTime=1.25
EnableUIResizing=True
EnableBatching=True
UseStaticTranslations=True
OverrideFont=lolita 6000
OverrideFontSize=
OverrideFontTextMeshPro=
FallbackFontTextMeshPro=
ResizeUILineSpacingScale=
ForceUIResizing=False
IgnoreTextStartingWith=\u180e;
TextGetterCompatibilityMode=False
GameLogTextPaths=
RomajiPostProcessing=ReplaceMacronWithCircumflex;RemoveApostrophes;ReplaceHtmlEntities
TranslationPostProcessing=ReplaceMacronWithCircumflex;ReplaceHtmlEntities
RegexPostProcessing=
CacheRegexPatternResults=False
PersistRichTextMode=Final
CacheRegexLookups=False
CacheWhitespaceDifferences=False
GenerateStaticSubstitutionTranslations=False
GeneratePartialTranslations=False
EnableTranslationScoping=True
EnableSilentMode=True
BlacklistedIMGUIPlugins=
EnableTextPathLogging=False
OutputUntranslatableText=False
IgnoreVirtualTextSetterCallingRules=False
MaxTextParserRecursion=1
HtmlEntityPreprocessing=True
HandleRichText=True
EnableTranslationHelper=False
ForceMonoModHooks=False
InitializeHarmonyDetourBridge=False
RedirectedResourceDetectionStrategy=AppendMongolianVowelSeparatorAndRemoveAll
OutputTooLongText=False
TemplateAllNumberAway=False
ReloadTranslationsOnFileChange=False
DisableTextMeshProScrollInEffects=False
CacheParsedTranslations=False

[Texture]
TextureDirectory=Translation\{Lang}\Texture
EnableTextureTranslation=False
EnableTextureDumping=False
EnableTextureToggling=False
EnableTextureScanOnSceneLoad=False
EnableSpriteRendererHooking=False
LoadUnmodifiedTextures=False
DetectDuplicateTextureNames=False
DuplicateTextureNames=
EnableLegacyTextureLoading=False
TextureHashGenerationStrategy=FromImageName
CacheTexturesInMemory=True
EnableSpriteHooking=False

[ResourceRedirector]
PreferredStoragePath=Translation\{Lang}\RedirectedResources
EnableTextAssetRedirector=False
LogAllLoadedResources=False
EnableDumping=False
CacheMetadataForAllFiles=True

[Http]
UserAgent=
DisableCertificateValidation=True

[TranslationAggregator]
Width=400
Height=100
EnabledTranslators=

[Debug]
EnableConsole=False

[Migrations]
Enable=True
Tag=5.6.1

[Baidu]
BaiduAppId=
BaiduAppSecret=
DelaySeconds=1

[BingLegitimate]
OcpApimSubscriptionKey=

[Custom]
Url=
EnableShortDelay=False
DisableSpamChecks=False

[DeepL]
ExecutableLocation=
MinDelaySeconds=2
MaxDelaySeconds=6

[DeepLLegitimate]
ExecutableLocation=
ApiKey=
Free=False

[ezTrans]
InstallationPath=

[Google]
ServiceUrl=

[GoogleV2]
ServiceUrl=
RPCID=MkEWBc
VERSION=boq_translate-webserver_20210323.10_p0
UseSimplest=False

[GoogleLegitimate]
GoogleAPIKey=

[LecPowerTranslator15]
InstallationPath=

[LingoCloud]
LingoCloudToken=qnqs6o5o6qx80uwqt8j6

[Watson]
Url=
Key=

[Yandex]
YandexAPIKey=

Relevant Log Output

[Message: Preloader] BepInEx 6.0.0-be.764 - SuccubusShowdown (2026/5/17 23:57:29)
[Message: Preloader] Built from commit 5f39645992ab8b944cad394b63470e4920f8b16d
[Info   :   BepInEx] System platform: Windows 10 64-bit
[Info   :   BepInEx] Process bitness: 64-bit (x64)
[Info   :   BepInEx] Running under Unity 6000.3.5f2
[Info   :   BepInEx] Runtime version: 6.0.7
[Info   :   BepInEx] Runtime information: .NET 6.0.7
[Info   :   BepInEx] 2 plugins to load
[Info   :   BepInEx] Loading [XUnity Auto Translator 5.6.1]
[Info   :   BepInEx] Loading [XUnity Resource Redirector 2.1.0]
[Info   :XUnity.AutoTranslator] Force loading ALL proxy assemblies.

[Warning:XUnity.AutoTranslator] An error occurred while resolving type: UnityEngine.TextMesh
System.ArgumentException: TextMesh does not have a corresponding IL2CPP class pointer

[Warning:XUnity.AutoTranslator] An error occurred while resolving type: UnityEngine.WWW
System.ArgumentException: WWW does not have a corresponding IL2CPP class pointer

[Error  :Il2CppInterop] Nested type ToolbarButtonSize on GUI not found!
[Warning:XUnity.AutoTranslator] An error occurred while resolving type: UnityEngine.GUI+ToolbarButtonSize
System.ArgumentException: ToolbarButtonSize does not have a corresponding IL2CPP class pointer

[Info   :XUnity.AutoTranslator] Version of TextMesh Pro: 1.4.0.
[Warning:  HarmonyX] AccessTools.Method: Could not find method for type TMPro.TMP_Text and name SetCharArray and parameters (Il2CppInterop.Runtime.InteropTypes.Arrays.Il2CppStructArray<int>, int, int)
[Warning:XUnity.AutoTranslator] Could not hook 'TMP_Text_SetCharArray_Hook3'. Likely due differences between different versions of the engine or text framework.

[Info   :XUnity.AutoTranslator] Loaded XUnity.AutoTranslator into Unity [6000.3.5f2] game.
[Info   :XUnity.AutoTranslator] Attempting to load TextMesh Pro font from asset bundle.
[Warning:XUnity.AutoTranslator] An error occurred while loading text mesh pro override font. Retrying load with custom proxies...
System.MissingMethodException: Method not found: '!0 ByRef Il2CppSystem.ReadOnlySpan`1.GetPinnableReference()'.
   at UnityEngine.AssetBundle.LoadFromFile_Internal(String path, UInt32 crc, UInt64 offset)
   at FastReflection<UnityEngine.AssetBundle.LoadFromFile>(Object , Object[] )
   at XUnity.Common.Utilities.CachedMethod.Invoke(Object instance, Object[] arguments)
   at XUnity.AutoTranslator.Plugin.Core.Fonts.FontHelper.GetTextMeshProFont(String assetBundle)
   at XUnity.AutoTranslator.Plugin.Core.Fonts.FontCache.GetOrCreateOverrideFontTextMeshPro()

[Info   :XUnity.AutoTranslator] Attempting to load TextMesh Pro font from asset bundle.
[Error  :XUnity.AutoTranslator] An error occurred while loading text mesh pro override font: lolita 6000
System.Exception: ICall with signature UnityEngine.AssetBundle::LoadFromFile_Internal(System.String,System.UInt32,System.UInt64) was not resolved
   at (missing icall delegate) UnityEngine.AssetBundleProxy+LoadFromFile_InternalDelegate(IntPtr , UInt32 , UInt64 )
   at UnityEngine.AssetBundleProxy.LoadFromFile(String path, UInt32 crc, UInt64 offset)
   at UnityEngine.AssetBundleProxy.LoadFromFile(String path)
   at XUnity.AutoTranslator.Plugin.Core.Fonts.FontHelper.GetTextMeshProFontByCustomProxies(String assetBundle)
   at XUnity.AutoTranslator.Plugin.Core.Fonts.FontCache.GetOrCreateOverrideFontTextMeshPro()

[Error  :Il2CppInterop] Exception in IL2CPP-to-Managed trampoline, not passing it to il2cpp: System.MissingMethodException: Method not found: 'Void UnityEngine.WaitForSeconds..ctor(Single)'.
   at XUnity.AutoTranslator.Plugin.Core.Utilities.CoroutineHelper.CreateWaitForSeconds(Single seconds)
   at XUnity.AutoTranslator.Plugin.Core.Utilities.DebounceFunction.Run()+MoveNext()
   at Trampoline_ByteThisXUnity.AutoTranslator.Plugin.Core.Il2CppManagedEnumeratorMoveNext(IntPtr , Il2CppMethodInfo* )

[Error  :Il2CppInterop] Exception in IL2CPP-to-Managed trampoline, not passing it to il2cpp: System.MissingMethodException: Method not found: 'Void UnityEngine.WaitForSeconds..ctor(Single)'.
   at XUnity.AutoTranslator.Plugin.Core.Utilities.CoroutineHelper.CreateWaitForSeconds(Single seconds)
   at XUnity.AutoTranslator.Plugin.Core.Utilities.DebounceFunction.Run()+MoveNext()
   at Trampoline_ByteThisXUnity.AutoTranslator.Plugin.Core.Il2CppManagedEnumeratorMoveNext(IntPtr , Il2CppMethodInfo* )

[Info   :XUnity.AutoTranslator] Skipping plugin scan because no plugin-specific translations has been registered.

Additional Notes

  • BepInEx/ErrorLog.log is empty.
  • I understand that the font configuration may be relevant because OverrideFont=lolita 6000 is currently set.
  • However, the more important compatibility problems appear to be the missing Unity/IL2CPP type resolutions, the failed TMP_Text.SetCharArray hook, and the WaitForSeconds..ctor(Single) MissingMethodException.
  • If needed, I can also retest with all font override settings cleared to see whether the non-font errors still reproduce.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions