f111fei/react-native-unity-view

display problem when switch back from Unity

Closed this issue · 4 comments

可能和本项目无直接关系。

在此,另外请教一个问题。 我有一个RN页面A, 跳转到一个嵌入了Unity(这个Unity是做成了RN的Native UI的)的RN页面B,这个时候,Unity能正常显示。但是当我从这个B页面会到A页面的时候,A页面可以正常调整过去,A页面可响应操作。但是有时候,完全显示不出来内容。(这个时候屏幕只显示了手机桌面。)

  1. 我的MainActivity.java
    @OverRide
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    SplashScreen.show(this);

     //// getWindow().setFormat(PixelFormat.RGBX_8888); // <--- This makes xperia play happy
     mUnityPlayer = new UnityPlayer(this);
    

    }

  2. 我的RN的Native UI Manager:
    @OverRide
    protected UnityPlayer createViewInstance(ThemedReactContext reactContext) {
    MainActivity activity = (MainActivity)reactContext.getCurrentActivity();
    return activity.getUnityPlayer();
    }

createViewInstance 这个方法规定是每次要创建一个新实例的。你这样做不确定有没有问题。

另外显示不出来可能是渲染问题,尝试下面两种办法看看能不能解决

  1. 不要把有Unity的界面设置成全屏,设置一个固定尺寸。
  2. 如果显示有异常,先按下home切出app,然后再切回来看看。

渲染问题。切出在切入,是正常的。

我想在切换回来后,RN无法确认Unity所占用的屏幕部分已经被修改,所以,没重新渲染那个部分。因为我的嵌入了Unity的RN页面,存在RN组件,所以,只有RN组件所占用的屏幕部分重新渲染了。我是想要找到个方法在Unity的RN页面切换出去后,强制刷屏一次,但还不知道如何做。目前,我用了一个取巧的方法。确保Unity的RN页面的左下角和右上角都存在RN组件,这样RN会重刷屏幕,在退出这个RN页面的时候,呵呵。RN不是按照组件来刷新屏幕,而是按照所有组件的联合区域来刷的。

第一个方案应该也是有效的。 或者你搜一下 surefaceview重绘 看看能不能找到办法,这个应该是unity的锅。

不全屏也是一样的问题。我的这个RN页面是有RN按钮和Unity组件,无论是RN组件浮在Unity组件上,还是和RN分屏,问题是相同的。