Remote Inspector

What is this?

This asset has Remote Hierarchy window and Remote Inspector window. They show you the states of your game running on a mobile device or a PC. And they allow you to change the fields and properties - both private and public.

Where to use?

In a professional project, building an APK or an IPA takes many minutes to hours. So just adding a line of a log to your game to view a variable’s value can take most of your work time away. But if you build your game with this asset, you can do the following things without rebuilding your game or implementing a custom tool.

  • Debugging - View the hierarchy and change game objects’ fields and properties without writing any code. Even private fields and properties.
  • Performance Tuning - Turn on/off game objects and components to find what drops your game’s FPS down.
  • Balancing - Tweak level data during playtests to make your game fun.

How to use?

Just drop a prefab ‘RemoteInspectorServer’ in your first scene. The prefab has a small web server in it. And it communicates with the Unity Editor parts through the network.

If your PC and your mobile device are in the same network, just type the IP address of your mobile device and the port, and click the Refresh button in the Hierarchy Window. The default port is 8080. And you can change the default port in the RemoteInspectorServer prefab.

Or, if your Android device is connected to your PC through a USB cable, you can make use of ADB’s port forwarding feature. The following command adds a port forwarding setting. If it is succeeded, type ‘localhost:8080’ and click the Refresh button in the Hierarchy Window. See Unity document’s ADB profiling section for details.

adb forward tcp:8080 tcp:8080

IL2CPP

If you are using IL2CPP, you can not see some components in the Remote Inspector window. It is because IL2CPP strips unused classes by static checking. To prevent it, you need to set up a link.xml file in your Unity project. See Bytecode Stripping page for details.

Remote Inspector has an example link.xml file that preserves all UnityEngine core classes in the Example directory, Example.link.xml. You need to rename it to link.xml.

Limitations

Remote Inspector shows components in a raw form. It’s different with Unity’s built-in inspector which makes use of custom editors. This may confuse you with unknown field and property names. But in some cases, this may help you with the ability to view and change raw values not exposed to Unity’s built-in inspector.

Settings

  • Type or variable names not to serialize
    • Add class types or variable names to SerializationConfig.IsSerializable()