FAQ

Troubleshooting F.A.Q
=====================

Q. After obfuscating, my 3rd party plugin has stopped working!

A. The simplest way to fix this is to look at the plugin’s script to see what namespace they use. Then, in the inspector window in “Window->Obfuscator Settings” there is an array called “Skip Namespaces”. Add the plugin’s namespace to this array and the obfuscator will ignore any matching namespaces. Occassionally a plugin will forget to use namespaces for its scripts, in which case you have to : Annotate each class with [Obfuscator.Attribute.DoNotObfuscateClassAttribute].

Q. Button clicks don’t work anymore!

A. Check your Options and see if you enabled the “public methods”. If you did, then make sure you’ve added a [Obfuscator.Attribute.DoNotRenameAttribute] attribute to the button click method.
For a more obfuscated approach you could assign button clicks programatically. For example, here the ButtonMethod can be obfuscated:

public Button mybutton;

public void Start()
{
mybutton.onClick.AddListener(ButtonMethod);
}

The same process works for all gui methods.
But mostly if you check in the inspector window in “Window->Obfuscator Settings”: Find Gui Methods, it will find many to all!

Q. Animation events don’t work anymore!

A. See “Button clicks don’t work anymore!”. If a method is being typed into the inspector, you should exclude it from Obfuscation.
Here works also: if you check in the inspector window in “Window->Obfuscator Settings”: Find Animation Methods, it will find many to all!

Q. It’s not working for a certain platform.

A. Regardless of the platform, send us an email (orangepearsoftware@gmail.com) with the error and we’ll see what we can do.

Q. How can we run obfuscation later in the build process?

A. You can control this in the Assets/ObfuscatorPro/Editor/BuildPostProcessor.cs script. The PostProcessScene attribute on the Obfuscate method has an index number that you can freely change to enable other scripts to be called first.

Q. Can I obfuscate externally created DLLs?

A. Currently no.

Q. How do I obfuscate local variables?

A. Local variable names are not stored anywhere, so there is nothing to obfuscate. A decompiler tries to guess a local variable’s name based on the name of its class, or the method that instantiated it.

Q. What can I do to make it more secure?

A. Try enabling obfuscation of MonoBehaviour and their methods. Enable string obfuscation too obfuscate sensitive methods containing strings you’d prefer people not to see in a decompiler. Refactor your code to use smaller methods.

Q. Something’s still not working, how can I get in touch with you?

A. Please email us at orangepearsoftware@gmail.com giving as much information about the problem as possible.