- Home /
(Android) mUnityPlayers SurfaceView Access
The UnityPlayer variable mUnityPlayer has a private SurfaceView variable which I assume stores the view that unity is rendering the game to.
I would love to be able to have access the it.
Does anyone know of a way?
Answer by StevenBrooks · Feb 02, 2017 at 10:30 PM
Sort of?
Unity renders to Framebuffer0 for its final output. Whatever is in Framebuffer0 should be what you want to access.
It would be nice to get to the actually SurfaceView Unity uses.
I tried defining a new one in a child class to attempt to override/hide Unity's but that was met with very little success.
What are you trying to accomplish?
I think I can get the SurfaceView in a very hacky way now (Unity 5.5.0f3):
UnityPlayer view = (UnityPlayer)mUnityPlayer.getView();
Field f = view.getClass().getDeclaredField("i");
f.setAccessible(true);
SurfaceView sf = (SurfaceView) f.get(view);
SurfaceHolder sfhTrackHolder = sf.getHolder();
sfhTrackHolder.addCallback(myHolderCallback);
Though I'm not sure how to do anything with it. I'd like to modify its output on every frame, if possible. The end result is really to make certain colors transparent; showing some of the layer beneath my Unity view.
Your answer
Follow this Question
Related Questions
How can I access Native Android Classes with parameters? 1 Answer
How to start the UnityPlayerActivity from a java plugin that overrides the basic Android Activity 1 Answer
Android plugin & Activity help needed - "GetMethodID method not found" problems 0 Answers
Issue installing apk using old Cert 1 Answer
Error Building Android Project 2 Answers