using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class NativeAd : MonoBehaviour { protected static RectTransform s_NativeAd; private static NativeAd s_instance; public static NativeAd Instance { get { if (s_instance == null) { Debug.LogError("s_instance == null "); } return s_instance; } } [SerializeField] private Camera uiCamera; bool horizontal = true; private void Awake() { s_instance = this; } public void ShowNativeAd() { if (ToukaAdManager.Instance.IsReadyNative) { ToukaAdManager.Instance.ShowNative(GetX(), GetY(), GetWidth(), GetHeight()); } } //由于loadnative 函数有个问题,比如多个位置多个不同尺寸的native。目前只能处理一个尺寸,所以设置了firstFlg,位置宽高得到一次即可。 static bool firstFlg = true; static float m_width; static float m_height; static float m_x; static float m_y; public float GetWidth() { FirstGetWAndH(); return m_width; } public float GetHeight() { FirstGetWAndH(); return m_height; } public float GetX() { FirstGetWAndH(); return m_x; } public float GetY() { FirstGetWAndH(); return m_y; } void FirstGetWAndH() { if (firstFlg) { if(uiCamera==null) { uiCamera = GameObject.Find("Main Camera").GetComponent(); } Debug.Log("YANGWY "+uiCamera); Vector3 lefttop = uiCamera.WorldToScreenPoint(new Vector3(transform.position.x - GetComponent().rect.size.x / 2 * transform.lossyScale.x, transform.position.y + GetComponent().rect.size.y / 2 * transform.lossyScale.y, transform.position.z)); Vector3 rightbottom = uiCamera.WorldToScreenPoint(new Vector3(transform.position.x + GetComponent().rect.size.x / 2 * transform.lossyScale.x, transform.position.y - GetComponent().rect.size.y / 2 * transform.lossyScale.y, transform.position.z)); Vector3 picture_zero = uiCamera.WorldToScreenPoint(transform.position); float x = lefttop.x; float y = rightbottom.y; float width = rightbottom.x - lefttop.x; float height = Mathf.Abs(rightbottom.y - lefttop.y); y = Screen.height - (picture_zero.y + height / 2); if (horizontal) { if (height > width) { height = width; } if (width > height * 1.2f) { x += (width - (height * 1.2f)) / 2; width = height * 1.2f; } } else { } m_x = x; m_y = y; m_width = width; m_height = height; firstFlg = false; } } }