| 
									
										
										
										
											2022-05-23 13:39:59 +00:00
										 |  |  |  | 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; | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         } | 
					
						
							| 
									
										
										
										
											2022-05-27 16:06:04 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |         public void RemoveNative() | 
					
						
							|  |  |  |  |         { | 
					
						
							|  |  |  |  |             ToukaAdManager.Instance.HideNative(false); | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         public void ShowNativeAd(string adpos) | 
					
						
							| 
									
										
										
										
											2022-05-23 13:39:59 +00:00
										 |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2022-05-27 16:06:04 +00:00
										 |  |  |  |             Debug.Log("yangwu " + GetX() + "y" + GetY() + "width" + GetWidth() + "hei" + GetWidth()); | 
					
						
							| 
									
										
										
										
											2022-05-23 13:39:59 +00:00
										 |  |  |  |             if (ToukaAdManager.Instance.IsReadyNative) | 
					
						
							|  |  |  |  |             { | 
					
						
							| 
									
										
										
										
											2022-05-27 16:06:04 +00:00
										 |  |  |  |                  | 
					
						
							|  |  |  |  |                 ToukaAdManager.Instance.ShowNative(GetX(), GetY(), GetWidth(), GetHeight(),adpos); | 
					
						
							| 
									
										
										
										
											2022-05-23 13:39:59 +00:00
										 |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  |         //由于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; | 
					
						
							|  |  |  |  |             } | 
					
						
							|  |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } |