解决使用FairyGUI接入Facebook原生广告NativeAd不会被记录impression的问题

facebook提供的unity原生广告插件 是根据摄像机内是否有广告展示对象来判断impression的

摄像机获取方式如下

                GameObject currentObject = this.gameObject;
                Camera camera = this.camera;
                if (camera == null) {
                    camera = this.GetComponent<Camera>();
                }
                if (camera == null) {
                    camera = Camera.main;
                }

一般使用FairyGUI的2D工程,是不需要MainCamera的,直接使用FairyGUI的Stage Camera,如果Scene里默认的MainCamera如果没有去掉,那么Camera.main就会取到MainCamera,这样在后续检测原生广告是否在相机内显示时就会出错

            Vector3[] worldCorners = new Vector3[4];
            transform.GetWorldCorners(worldCorners);
            Vector3 gameObjectBottomLeft = worldCorners [0];
            Vector3 gameObjectTopRight = worldCorners [2];
            Vector3 cameraBottomLeft = camera.pixelRect.min;
            Vector3 cameraTopRight = camera.pixelRect.max;

            if (canvas.renderMode != RenderMode.ScreenSpaceOverlay) {
                gameObjectBottomLeft = camera.WorldToScreenPoint(gameObjectBottomLeft);
                gameObjectTopRight = camera.WorldToScreenPoint(gameObjectTopRight);
            }

            // Check that gameObject has 100% width visible
            if (gameObjectBottomLeft.x < cameraBottomLeft.x || gameObjectTopRight.x > cameraTopRight.x) {
                return this.logViewability(false, "Less than 100% of the width of the GameObject is inside the viewport.");
            }

因为FairyGUI是用Stage Camera渲染的。

解决方式就是让Camera.main这个接口获取到的相机改成Stage Camera。


所以我们把Stage Camera的tag设置为MainCamera,同时根据实际项目需求去掉Main Camera或者把Main Camera的tag改成untagged或者其他(Camera.main获取的是第一个tag设置为MainCamera的相机)。


这样问题就解决了

另外也可以在注册广告点击对象的时候把对应的相机作为参数传入

nativeAd.RegisterGameObjectForImpression(this.gameObject, new Button[] { callToActionButton}, yourStageCamera);


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值