121 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C#
		
	
	
	
| using System.Collections;
 | ||
| using System.Collections.Generic;
 | ||
| using UnityEngine;
 | ||
| using UnityEngine.UI;
 | ||
| 
 | ||
| namespace Touka
 | ||
| {
 | ||
|     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 RemoveNative()
 | ||
|         {
 | ||
|             ToukaAdManager.Instance.HideNative(false);
 | ||
|         }
 | ||
| 
 | ||
|         public void ShowNativeAd(string adpos)
 | ||
|         {
 | ||
|             Debug.Log("yangwu " + GetX() + "y" + GetY() + "width" + GetWidth() + "hei" + GetWidth());
 | ||
|             if (ToukaAdManager.Instance.IsReadyNative)
 | ||
|             {
 | ||
|                 
 | ||
|                 ToukaAdManager.Instance.ShowNative(GetX(), GetY(), GetWidth(), GetHeight(),adpos);
 | ||
|             }
 | ||
|         }
 | ||
|         //由于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<Camera>();
 | ||
|                 }
 | ||
|                 Debug.Log("YANGWY " + uiCamera);
 | ||
|                 Vector3 lefttop = uiCamera.WorldToScreenPoint(new Vector3(transform.position.x - GetComponent<RectTransform>().rect.size.x / 2 * transform.lossyScale.x, transform.position.y + GetComponent<RectTransform>().rect.size.y / 2 * transform.lossyScale.y, transform.position.z));
 | ||
|                 Vector3 rightbottom = uiCamera.WorldToScreenPoint(new Vector3(transform.position.x + GetComponent<RectTransform>().rect.size.x / 2 * transform.lossyScale.x, transform.position.y - GetComponent<RectTransform>().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;
 | ||
|             }
 | ||
|         }
 | ||
| 
 | ||
|     }
 | ||
| } |