sinai-dev / UniverseLib

A library for making plugins which target IL2CPP and Mono Unity games.
GNU Lesser General Public License v2.1
116 stars 48 forks source link

Failing to display in some scenes #6

Closed krypto5863 closed 2 years ago

krypto5863 commented 2 years ago

Works as expected except in some scenes where the UI isn't present and refuses to show itself. Toggling a UniverseLib UI without disabling the event system override makes the input of buttons impossible, but toggling it off returns normal functionality.

All UIs reveal themselves once exiting this mode though if they were left toggled on. Not really sure what the cause could be but I'll test anything you need tested.

Also as an aside, is there any chance you could provide the DLLs in the releases? I have an installer that fetches files from GitHub, and I'd like it to be able to fetch your assemblies from here.

sinai-dev commented 2 years ago

Gonna need some more context, what game is this and how can I reproduce it?

krypto5863 commented 2 years ago

The game is COM3D2, you just need to enter Karaoke mode which requires a DLC and it's replicated.

sinai-dev commented 2 years ago

Alright thanks. It sounds like perhaps everything is working fine but the game is rendering a Canvas on top of ours with a higher sortingOrder, so ours is hidden beneath it.

Do you want to try this version for me and let me know how it goes - UniverseLib.Mono.zip?

If it doesn't work, could you please add this to your plugin's Update method and press F10 when the UI issue is occuring?

if (Input.GetKeyDown(KeyCode.F10))
{
    foreach (var canvas in Resources.FindObjectsOfTypeAll<Canvas>())
    {
        if (canvas.enabled && canvas.gameObject.activeSelf)
        {
            Debug.Log($"{canvas.name}: {canvas.sortingOrder}");
        }
    }
}
krypto5863 commented 2 years ago

No dice. Here is the result of that code snipett.

[Info   : Unity Log] Canvas (Tutorial)(Clone): 2
[Info   : Unity Log] Canvas (Dummy): 2
[Info   : Unity Log] Canvas: 0
[Info   : Unity Log] Canvas: 0
[Info   : Unity Log] Canvas: 0
[Info   : Unity Log] ExtendedPresetManUI_Root: 29998
[Info   : Unity Log] Canvas (Tutorial): 2

ExtendedPresetManUI is my plug's UI.

sinai-dev commented 2 years ago

Hmm ok, that's a bummer. Honestly I have no idea how something would be rendering on top of our Canvas in this situation, maybe some trickery with Cameras or Shaders. I'll have to try dig into this when I get a chance, for now if you can find any additional information it would be helpful.

sinai-dev commented 2 years ago

Unfortunately I can't figure this one out, my guess is they're doing something very specific with shaders or cameras to render on top of everything. Don't think this is realistically something I can address it UniverseLib itself, but if you find any more information or a possible solution then feel free to reopen this.

luvoid commented 1 year ago

I believe the issue is related to the fact that a camera normally used for VR is being used in that scene. I wrote a plugin to print out information about all the cameras and canvases. Here is what the output looks like in a scene where UniversalLib GUIs work:

[Message:uGUI Debug] Log Canvases
[Info   :uGUI Debug] EventSystem.current = null
[Info   :uGUI Debug] uGUIUtility.eventSystem = null
[Info   :uGUI Debug] com.sinai.unityexplorer.MouseInspector_Root (UnityEngine.Canvas).sortingOrder = 30000
[Info   :uGUI Debug] com.sinai.unityexplorer.MouseInspector_Root (UnityEngine.Canvas).layer = 0b101
[Info   :uGUI Debug] com.sinai.unityexplorer.MouseInspector_Root (UnityEngine.Canvas).worldCamera =
[Info   :uGUI Debug] com.sinai.unityexplorer_Root (UnityEngine.Canvas).sortingOrder = 29999
[Info   :uGUI Debug] com.sinai.unityexplorer_Root (UnityEngine.Canvas).layer = 0b101
[Info   :uGUI Debug] com.sinai.unityexplorer_Root (UnityEngine.Canvas).worldCamera =
[Info   :uGUI Debug] Inactive Canvases
[Info   :uGUI Debug] COM3D2.UGUIDebug_Root (UnityEngine.Canvas).sortingOrder = 9999
[Info   :uGUI Debug] COM3D2.UGUIDebug_Root (UnityEngine.Canvas).layer = 0b101
[Info   :uGUI Debug] COM3D2.UGUIDebug_Root (UnityEngine.Canvas).worldCamera =
[Info   :uGUI Debug] COM3D2.ButtJiggle_Root (UnityEngine.Canvas).sortingOrder = 9999
[Info   :uGUI Debug] COM3D2.ButtJiggle_Root (UnityEngine.Canvas).layer = 0b101
[Info   :uGUI Debug] COM3D2.ButtJiggle_Root (UnityEngine.Canvas).worldCamera =
[Info   :uGUI Debug] com.sinai.universelib.resizeCursor_Root (UnityEngine.Canvas).sortingOrder = 30000
[Info   :uGUI Debug] com.sinai.universelib.resizeCursor_Root (UnityEngine.Canvas).layer = 0b101
[Info   :uGUI Debug] com.sinai.universelib.resizeCursor_Root (UnityEngine.Canvas).worldCamera =
[Info   :uGUI Debug] KISS Canvas Wrappers
[Info   :uGUI Debug] Inactive KISS Canvas Wrappers
[Message:uGUI Debug] Log Cameras
[Info   :uGUI Debug] Camera.main = CameraMain (UnityEngine.Camera)
[Info   :uGUI Debug] EventSystem.current.gameObject.GetComponentInChildren<Camera>() =
[Info   :uGUI Debug] CameraMain (UnityEngine.Camera).cullingMask = 0b10101111111111110110111011011111
[Info   :uGUI Debug] CameraMain (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] Camera (UnityEngine.Camera).cullingMask = 0b100000000
[Info   :uGUI Debug] Camera (UnityEngine.Camera).eventMask = 0b0
[Info   :uGUI Debug] Camera (UnityEngine.Camera).cullingMask = 0b100000000
[Info   :uGUI Debug] Camera (UnityEngine.Camera).eventMask = 0b0
[Info   :uGUI Debug] Inactive Cameras
[Info   :uGUI Debug] EffectMaskCamera (UnityEngine.Camera).cullingMask = 0b11111111111111111111001111111111
[Info   :uGUI Debug] EffectMaskCamera (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] CameraThum (UnityEngine.Camera).cullingMask = 0b110000000000
[Info   :uGUI Debug] CameraThum (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111

And here is one from a scene where UniversalLib GUIs are not visible:

[Message:uGUI Debug] Log Canvases
[Info   :uGUI Debug] EventSystem.current = null
[Info   :uGUI Debug] uGUIUtility.eventSystem = null
[Info   :uGUI Debug] Canvas (Karaoke Select) (UnityEngine.Canvas).sortingOrder = 2
[Info   :uGUI Debug] Canvas (Karaoke Select) (UnityEngine.Canvas).layer = 0b0
[Info   :uGUI Debug] Canvas (Karaoke Select) (UnityEngine.Canvas).worldCamera = 
[Info   :uGUI Debug] Canvas (Dummy) (UnityEngine.Canvas).sortingOrder = 2
[Info   :uGUI Debug] Canvas (Dummy) (UnityEngine.Canvas).layer = 0b0
[Info   :uGUI Debug] Canvas (Dummy) (UnityEngine.Canvas).worldCamera = VR Controller Raycast Camera (UnityEngine.Camera)
[Info   :uGUI Debug] Canvas (UnityEngine.Canvas).sortingOrder = 0
[Info   :uGUI Debug] Canvas (UnityEngine.Canvas).layer = 0b11101
[Info   :uGUI Debug] Canvas (UnityEngine.Canvas).worldCamera = VR Controller Raycast Camera (UnityEngine.Camera)
[Info   :uGUI Debug] Canvas (UnityEngine.Canvas).sortingOrder = 0
[Info   :uGUI Debug] Canvas (UnityEngine.Canvas).layer = 0b0
[Info   :uGUI Debug] Canvas (UnityEngine.Canvas).worldCamera = VR Controller Raycast Camera (UnityEngine.Camera)
[Info   :uGUI Debug] Canvas (UnityEngine.Canvas).sortingOrder = 0
[Info   :uGUI Debug] Canvas (UnityEngine.Canvas).layer = 0b0
[Info   :uGUI Debug] Canvas (UnityEngine.Canvas).worldCamera = VR Controller Raycast Camera (UnityEngine.Camera)
[Info   :uGUI Debug] COM3D2.UGUIDebug_Root (UnityEngine.Canvas).sortingOrder = 9998
[Info   :uGUI Debug] COM3D2.UGUIDebug_Root (UnityEngine.Canvas).layer = 0b101
[Info   :uGUI Debug] COM3D2.UGUIDebug_Root (UnityEngine.Canvas).worldCamera = VR Controller Raycast Camera (UnityEngine.Camera)
[Info   :uGUI Debug] Inactive Canvases
[Info   :uGUI Debug] Canvas (Dialog) (UnityEngine.Canvas).sortingOrder = 2
[Info   :uGUI Debug] Canvas (Dialog) (UnityEngine.Canvas).layer = 0b0
[Info   :uGUI Debug] Canvas (Dialog) (UnityEngine.Canvas).worldCamera = 
[Info   :uGUI Debug] Canvas (Selector UI) (UnityEngine.Canvas).sortingOrder = 2
[Info   :uGUI Debug] Canvas (Selector UI) (UnityEngine.Canvas).layer = 0b0
[Info   :uGUI Debug] Canvas (Selector UI) (UnityEngine.Canvas).worldCamera = 
[Info   :uGUI Debug] Canvas (VR Config) (UnityEngine.Canvas).sortingOrder = 2
[Info   :uGUI Debug] Canvas (VR Config) (UnityEngine.Canvas).layer = 0b0
[Info   :uGUI Debug] Canvas (VR Config) (UnityEngine.Canvas).worldCamera = 
[Info   :uGUI Debug] com.sinai.universelib.resizeCursor_Root (UnityEngine.Canvas).sortingOrder = 9997
[Info   :uGUI Debug] com.sinai.universelib.resizeCursor_Root (UnityEngine.Canvas).layer = 0b101
[Info   :uGUI Debug] com.sinai.universelib.resizeCursor_Root (UnityEngine.Canvas).worldCamera = VR Controller Raycast Camera (UnityEngine.Camera)
[Info   :uGUI Debug] KISS Canvas Wrappers
[Info   :uGUI Debug] Inactive KISS Canvas Wrappers
[Message:uGUI Debug] Log Cameras
[Info   :uGUI Debug] Camera.main = Main Camera (eye) (UnityEngine.Camera)
[Info   :uGUI Debug] EventSystem.current.gameObject.GetComponentInChildren<Camera>() = 
[Info   :uGUI Debug] Main Camera (eye) (UnityEngine.Camera).cullingMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] Main Camera (eye) (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] Camera (UnityEngine.Camera).cullingMask = 0b10011111011111110110111011011111
[Info   :uGUI Debug] Camera (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] Camera (UnityEngine.Camera).cullingMask = 0b10011111011111110110111011011111
[Info   :uGUI Debug] Camera (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] Camera (UnityEngine.Camera).cullingMask = 0b100000000
[Info   :uGUI Debug] Camera (UnityEngine.Camera).eventMask = 0b0
[Info   :uGUI Debug] Camera (UnityEngine.Camera).cullingMask = 0b100000000
[Info   :uGUI Debug] Camera (UnityEngine.Camera).eventMask = 0b0
[Info   :uGUI Debug] Camera (UnityEngine.Camera).cullingMask = 0b100000000
[Info   :uGUI Debug] Camera (UnityEngine.Camera).eventMask = 0b0
[Info   :uGUI Debug] Inactive Cameras
[Info   :uGUI Debug] VR Controller Raycast Camera (UnityEngine.Camera).cullingMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] VR Controller Raycast Camera (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] EffectMaskCamera (UnityEngine.Camera).cullingMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] EffectMaskCamera (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] DummyVRCameraRig(Clone) (UnityEngine.Camera).cullingMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] DummyVRCameraRig(Clone) (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] Reflection Probes Camera (UnityEngine.Camera).cullingMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] Reflection Probes Camera (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] EffectMaskCamera (UnityEngine.Camera).cullingMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] EffectMaskCamera (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] CameraMain (UnityEngine.Camera).cullingMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] CameraMain (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111
[Info   :uGUI Debug] CameraThum (UnityEngine.Camera).cullingMask = 0b110000000000
[Info   :uGUI Debug] CameraThum (UnityEngine.Camera).eventMask = 0b11111111111111111111111111111111